バリケンのPython日記 RSSフィード

2008-07-14

[] リスト内包表記(1)  リスト内包表記(1) - バリケンのPython日記 を含むブックマーク はてなブックマーク -  リスト内包表記(1) - バリケンのPython日記  リスト内包表記(1) - バリケンのPython日記 のブックマークコメント

Pythonでは、リスト内包表記が使えるよ。リスト内包表記は、Rubyにはない機能だね。

リスト内包表記って何?というのは一言で説明するのはちょっと難しいから、色々と実験しながら挙動を見てみるよ。

リスト内包表記をmap()関数のように使う

まずは、リスト内包表記をmap()関数のように使ってみるよ。「[式 for 変数 in リスト]」のように書くと、リストの各要素を変数に代入した上で、式を評価して、各結果をリストで返すよ。

言葉での説明だとちょっと難しいから、実際に動かしてみると分かりやすいんじゃないかな。

>>> lang = ['  Perl', '  Python ', 'PHP  ']
>>> [item.strip() for item in lang]
['Perl', 'Python', 'PHP']

ちなみに上記の例で出てきたstrip()メソッドは、文字列の左右に連続した空白がある場合にそれを削除するよ。

もうひとつ例を見てみるね。今度はリストの各要素を単純に3倍にするよ。

>>> vec = [2, 4, 6]
>>> [3 * x for x in vec]
[6, 12, 18]
>>> 

比較のために、map()関数で同じことをやってみるよ。

>>> lang = ['  Perl', '  Python ', 'PHP  ']
>>> map((lambda item: item.strip()), lang)
['Perl', 'Python', 'PHP']
>>> vec = [2, 4, 6]
>>> map((lambda x: 3 * x), vec)
[6, 12, 18]
>>>

たしかにPythonの場合は、リスト内包表記のほうがすっきりと表現できるね。