Python – リストの内包表記
2010年6月20日 11:48 AM by Abalone




他の方の書かれたPythonのコードとかを読んでいると見かけるリストの内包表記ですが、Python特有の書き方だと思う(PerlとかRubyにもあるんでしょうか・・・)。今まで適当に読んできたけれど(そしてあまり自分では使わずに来たけれど)、しっかり勉強して違和感なく使用、解析できるようにしたい。

まず、普通にリストを書くと以下のような感じ。

list1 = [0, 1, 2]

上記のようなリスト、list1を単に評価すると以下のようになる。

>>> list1 = [0, 1, 2]
>>> list1
[0, 1, 2]

これは単にリストを定義しただけだけれど、同じリストを以下のような書き方でも作成可能。

>>> list2 = [x for x in range(3)]
>>> list2
[0, 1, 2]

これは、for x in range(3)によってxに順次代入される0〜2までの数値それぞれを要素としたリストを作成する書き方になる。for x in range(3)の前に書いてあるxは、単にxを配置するだけではなくて、計算させることも可能。つまり、以下のように式を記述できる。

>>> list3 = [x*x for x in range(3)]
>>> list3
[0, 1, 4]

上のコードでは、list2の例ではxとだけ書いてあった箇所をx*xに変更してある。for x in range(3)は、0, 1, 2 を返却してくると思うが、それを二乗した数値を要素に持つリストが生成されている。

もちろん、要素は数字でなくてもよい。以下の例ではstrにa〜dの各文字を要素とするリストを定義して、その各要素を取り出して新たなリストをlist4として作成している。

>>> str = ['a', 'b', 'c', 'd']
>>> list4 = [s for s in str]
>>> list4
['a', 'b', 'c', 'd']

うまく使うとかなり綺麗に記述できて便利そう。





トラックバックURL


この記事に対するコメント/トラックバックはまだありません


コメントをどうぞ

お名前(必須)
Eメールアドレス(公開されません)(必須)