Pythonのスクリプトで頻繁に使われる list(配列)
特にMAYAで使われるスクリプトの多くは list から始まってるといっても過言ではないぐらい重要です。
今回はMAYAでスクリプトを書く上で避けては通れない list の使い方を紹介します。
list もしくは 配列 どちらの言い方でも良いと思いますが、
この記事ではlist で統一したいと思います。
(Pythonでも便宜上 配列 という言い方はしますが list が正しいです)
以前にMAYAアーティストが初めて触るPythonスクリプトの記事を書いたので、MAYAでスクリプトを書き始める事前準備として、以下の記事も読んでもらえると良いと思います。
[初心者]MAYAアーティストが0から始めるpythonスクリプト入門
[Python] if文の使い方 MAYAアーティストのスクリプト入門
[Python] if文の使い方 MAYAアーティストのスクリプト入門
![]() |
![]() |
|
ls()で取得するのはlist
MAYAで使うスクリプトの多くが ls(sl=True) でオブジェクトや頂点、
マテリアルやライトなど実行させたい対象を取得するところから始まると思います。

例えばMAYAでオブジェクト等を幾つか選択した状態で下のスクリプトを実行すると
import maya.cmds as cmds select_Objs_List = cmds.ls(sl=True) print(select_Objs_List)
出力
と返されます。
見ての通り[]の中に選択した要素が並んで入っています。
ls(sl=True)で返されるのは list なんです。
なのでMAYAでスクリプトを書くためには何はなくとも list を扱える事が重要。
listから要素を取り出す
単純に順番に名前を取り出すだけであれば以下のように書けます。
import maya.cmds as cmds select_Objs_List = cmds.ls(sl=True) for i_obj in select_Objs_List: print(i_obj)
オブジェクトを複数選択して実行します。
pCone1
pCylinder1
pCube1
pSphere1
選択したオブジェクトが順番に出力されました。
listから順番を指定して要素を取り出すには list[] と書きます。
import maya.cmds as cmds select_Objs_List = cmds.ls(sl=True) print(select_Objs_List) print(select_Objs_List[3])
幾つかオブジェクトを選択して実行します。
pCube1
一行目は選択したオブジェクトが順番に並んでいるlistが出力されました
二行目はその中から select_Objs_List[3] と指定した要素が出力されました。
順番は0から数え始めるので3と指定したら 0 1 2 3 の pCube1 が出力されます。
listに要素を追加 append() insert()
要素を追加する時は append()を使います。
空のlist new_list を作りました。
new_list = [] new_list.append("newItem") print(new_list)
実行すると
と空だったnew_listに ‘newItem’ が追加されて出力されました。
append()で追加するとlistの後ろに追加されます。
もう一度new_listに要素を追加します。
new_list.append("newItem2") print(new_list)
実行します。
‘newItem’の後ろに’newItem2’が追加されました。
もし追加したい順番を指定したい場合は insert()を使います。
new_listの最初に追加してみましょう。
new_list.insert(0,"newItem3") print(new_list)
実行します。
‘newItem3’が先頭に追加されました。
new_list.insert(順番,要素)
と書くと指定した場所に追加することが出来ます。
listの要素の数を取得 len()
listの中に幾つ要素が入っているか知りたい場合はlen()を使います
print(len(new_list))
実行します。
new_list に要素が3個入っていると出力されました。
他のlistと結合 extend()
listは他のlistと結合することが出来ます。
結合する時は extend() を使います。
new_list に new_list2 のlistを結合してみましょう。
new_list2 = ["new_item10","new_item11","new_item12",100,200] new_list.extend(new_list2) print(new_list)
実行します。
new_list2 の中にあった要素が new_list に追加されました。
もし新たにlistを作って結合したい場合は + で結合します
new_list3 = new_list + new_list2
と + で結合すれば、どちらのlistの要素も含んだ新たなlist new_list3が作られます。
Pythonのlistは文字列や数字など違う型の要素を混在させることが出来ます。
listの中を検索 in count()
listの中に指定した要素が含まれているかを知りたい場合は in を使います。
"new_item10" in new_list
出力
new_listの中に”new_item10″は存在すると返答されました。
存在していなかったら
"new_item17" in new_list
出力
False と出力されます。
使い方の例としては
if "new_item12" in new_list: print("i found new_item12")
の様に if で使う事が多いと思います。
listの中に指定した要素が幾つ含まれてるか検索したい場合は count()を使います
new_list.count("new_item12")
出力
イエスかノーかでは無くlist内に幾つ有るかで返答されます。
もしnew_listの中に”new_item12″が4個あったら 4 と返答されます。
もしnew_listの中に”new_item12″が存在しなかったら
と返されます。
listから要素を削除 del
listから指定した要素を削除する時は del を使います。
del new_list[2] print(new_list)
出力
元のnew_listの 0 1 2 番目にあった”newItem2″がなくなりました
listの中をソート sort() reverse()
sort() を使うとlistの順番を変えることが出来ます。
ランダムに並んだ数字の値を数字通りに並べ替えます。
num_list = [8,7,1,9,5,2] num_list.sort() print(num_list)
実行します。
num_listの順番がきれいに数字の大小の順番が変わりました。
reverse()を使うと順番を逆順に出来ます。
num_list.reverse() print(num_list)
実行します。
大きい順に変わりました。
for文で使う
listはfor文と一緒に使うことが多いと思います。
最初の項目「listから要素を取り出す」で
import maya.cmds as cmds select_Objs_List = cmds.ls(sl=True) for i_obj in select_Objs_List: print(i_obj)
を紹介しました。
応用として要素の数を取得するlen() と 要素を取り出すlist[]
そしてfor文を指定した数だけループさせるrange を使う方法を紹介します。
listの中から特定のオブジェクトの名前だけを出力、色を赤く変えます。
import maya.cmds as cmds select_Objs_List = cmds.ls(sl=True) print(select_Objs_List) for i_obj in range(len(select_Objs_List)): if i_obj == 3: print(select_Objs_List[i_obj]) cmds.polyColorPerVertex(select_Objs_List[i_obj], rgb=(1.0, 0.0, 0.0), cdo=True )
select_Objs_Listの要素の数をlen()で取得します。
あとは rangeで0から要素の数だけfor文のループをします。
if i_obj == 3:
0 1 2 3 番目のオブジェクトになったら
print(select_Objs_List[i_obj])
cmds.polyColorPerVertex(select_Objs_List[i_obj], rgb=(1.0, 0.0, 0.0), cdo=True )
if文で条件を満たした(3番目の)オブジェクトの名前を出力し色を赤に変えます。
複数のオブジェクト等を選択した状態で実行します。

listの並び順で4番目のpCube1 が赤色に変わりました。
まとめ
listは説明する事が多く、それぞれが駆け足的に短く簡単になってしまいました。
まだまだ紹介しきれてない事がありますが、一通り理解してもらえたら
list を使ってスクリプトが書けると思います。
MAYAでスクリプトを書くためには、日付や数値、名前などなど
ls(sl=True) 以外にも list は頻繁に使用するので是非覚えてほしいです。
![]() |
|
![]() |
|
![]() |
|
BTOパソコンの【FRONTIER】
3DCG/動画編集/そしてゲームプレイにも、高性能PCがお得な価格で購入できます
【決算感謝祭】\ノートPC・ゲーミングPC・などなど激安大放出!!/3月11日(木)15時まで
■第10世代 intel Core i9-10900F + NVIDIA RTX 3070 モデルが18万円台!!
■Ryzen 5 3600 + GTX 1660 SUPER モデルが9万円台!!
他 お買い得PCが沢山!数に限りがあるので売り切れる前に是非
▶最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】
【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】
デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン
「Adobeマスター講座」
受講ノルマは一切無し、Adobe製品の利用を目的に契約してもOK!これぞコスパ最強プラン!

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法
UdemyのおすすめPython学習コースネットショッピングをする感覚で講座を購入し、動画を視聴して学習するシステムのUdemy
そのUdemyで評価が高いPythonの人気講座といえば、現役シリコンバレーエンジニア「酒井潤」講師の講座。Pythonの書き方だけでなくシリコンバレー仕込みの Pythonic(パイソニック)と称されるPythonらしいコードの記述方法や実務での所作まで学べます。
24時間の割引セール!\人気の対象コースが¥1,500から!/まもなく終了!
「現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル」 ![]() |
現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! |

![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|