Pythonには”リスト内包表記”なるものがあるそうな。
初めて目にした時は、「なんじゃこのケッタイな書き方は!」と思ったものです。
リスト内包表記をザックリ説明すると、
『for分とかif分とか使って複数行必要だった処理が一行ですむよ。しかも処理が早いよ。でもちょっと読みづらいよ』
っていう書き方でしょうか。
ものの本によると、”リスト内包表記とは、あるリストを元にして別のリストを作るための記法のことです”、だそうです。
ちょっとMayaのpyemlで普通の書き方と、それを内包表記で書いた例を作ってみました。
選択したオブジェクトのうち、Meshのみをリストで返すというものです。
import pymel.core as pm sel = pm.selected() MeshList = [] #-------------------------------------- for i in sel: if i.nodeType() == "mesh": MeshList.append(i) #-------------------------------------- print MeshList
これをリスト内包表記を使って書くと
import pymel.core as pm sel = pm.selected() #リスト内包表記 #---------------------------------------------------- MeshList = [x for x in sel if x.nodeType() == "mesh"] #---------------------------------------------------- print MeshList
コメントで囲まれた部分を内包表記で書き換えました。
for分とif分を組み合わせたような書き方のが、リスト内包表記です。
比べるとすっきりした印象があります。
ここではfor分とif分の二つを内包表記で書き換えましたが、可読性が許す限りいくつでも内包できます。
以上、最近覚えたpythonのリスト内包表記でした。
コメント