リスト内包表記
Pythonのリスト内包表記(List Comprehension)は、リストを簡潔に作成するための強力な方法です。従来のforループを使ったリスト生成を一行で書くことができ、コードが読みやすくなります。この記事では、リスト内包表記の基本的な使い方と、その応用について解説します。
リスト内包表記の基本構文
リスト内包表記は、次のような構文を持ちます。
# リスト内包表記の基本構文
[式 for 変数 in イテラブル]
これにより、イテラブル(リスト、タプルなど)から要素を1つずつ取り出して式に適用し、その結果を新しいリストとして返します。例えば、1から5までの数値を持つリストを生成する場合、以下のように記述できます。
# リスト内包表記を使ってリストを生成
numbers = [i for i in range(1, 6)]
print(numbers)
このコードは、次のようなリストを生成します。
[1, 2, 3, 4, 5]
条件付きリスト内包表記
リスト内包表記では、条件を追加して特定の条件を満たす要素だけを含むリストを生成することもできます。これには、if文を使って条件を指定します。
# 条件付きリスト内包表記
even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers)
このコードでは、1から10までの数値のうち、偶数だけがリストに含まれます。出力は次の通りです。
[2, 4, 6, 8, 10]
ネストされたリスト内包表記
リスト内包表記は、ネスト(入れ子)して使用することもできます。例えば、2次元リストを生成する際にforループを入れ子にしてリストを作成できます。
# ネストされたリスト内包表記
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)
このコードでは、3×3の掛け算表のような2次元リストが生成されます。
[[1, 2, 3], [2, 4, 6], [3, 6, 9]]
リスト内包表記の注意点
リスト内包表記は非常に強力で便利ですが、複雑になりすぎるとコードの可読性が低下する可能性があります。特にネストしたリスト内包表記は注意が必要で、シンプルなリスト生成には非常に役立ちますが、複雑な操作には従来のforループを使った方がわかりやすい場合もあります。
まとめ
Pythonのリスト内包表記を使うことで、リスト生成を簡潔に記述することができます。条件付きリストやネストされたリスト内包表記を使用することで、より柔軟なリスト操作が可能になります。ただし、コードの可読性を保つためには、リスト内包表記が複雑になりすぎないように注意することが重要です。