他の方の書かれた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
コメントをどうぞ



