No More Retake

3DCG屋さん向けTips&Referenceサイト

メニュー

『内包表記』って便利 by Python

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のリスト内包表記でした。

参考:
http://docs.python.jp/2/tutorial/datastructures.html

Related Posts Plugin for WordPress, Blogger...

関連記事

  1. 07_Eye_Caches
  2. 49_rapi_eye
  3. 07_Eye_Caches
  4. 81_toxik_freeze_eye

    2014.01.13

    toxik:[Freeze]
  5. 88_toxik_stream_eye
  6. 112_PhotoshopHalftone

コメントをお待ちしております

このサイトについて

3DCG Tipsサイト。Houdiniの記事が多めです。

RSS

follow us in feedly

アンケート

あなたのCG歴はどのくらいですか?

View Results

Loading ... Loading ...

言語切り替え

  • English (United States)
  • 日本語

Archives

  • 2016 (33)
  • 2015 (64)
  • 2014 (54)
  • 2013 (60)
  • 2012 (54)

スポンサードリンク