リスト内包表現の基本
シーケンスやイテレート可能なオブジェクトを操作して新たなリストを得たい時は、内包表現を使う事で簡潔に作成できます。
リスト内包表現と同様に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')]
コメントを残す