Python リスト内包表現の使い方

リスト内包表現の基本

シーケンスやイテレート可能なオブジェクトを操作して新たなリストを得たい時は、内包表現を使う事で簡潔に作成できます。

リスト内包表現と同様にset内包表現もあります。

カギ括弧[]とfor, inで次のように使います。

リスト内包表現の記法

[ itemに関する処理 for item in items ]

itemやitemsは変数です。

基本

次の例は1~5の数字を3倍にした数字をリストにし、tripleに代入しています。

triple = [x*3 for x in range(5)]

print(triple)

【結果】

[0, 3, 6, 9, 12]

式がタプルの場合は丸カッコで括ります。以下の例の場合(x, x*3)のカッコを外すとシンタックスエラーになります。

triple = [(x,x*3) for x in range(5)]

print(triple)

【結果】

[(0, 0), (1, 3), (2, 6), (3, 9), (4, 12)]

特定の条件を満たすリストを得る方法

if文を使うと、シーケンスから特定の条件を満たすリストを得られます。

記法

[ itemに関する処理 for item in items if文(itemをリストにするための条件)]

次の例は、1~5の整数で2で割り切れるものを3倍にした整数をリストにしています。

y = [x * 3 for x in range(5) if x % 2 == 0]

print(y)

【結果】

[0, 6, 12]

for文の2重ループを内包表現で書く

for文による2重ループも内包表現で1行で書けます。左側のfor文が外側のfor文になります。

次の例は1と2, aとbの全ての組み合わせをリストにしています。

pair = [(n, s) for n in [1, 2] for s in ['a','b']]

print(pair)

【結果】

[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
スポンサーリンク
スポンサーリンク