リスト内表記とは、for文を1行で書いて、新しいリストを作る方法です。
例えば、
- 数字をまとめて作る
- 値を変換した新しいリストを作る
- 条件に合うものだけ取り出す
このようなときによく使います。
基本の書き方
[式 for 変数 in データ]最初は少し難しく見えますが、「for文を短く書いたもの」と考えると分かりやすいです。
コード例① 基本のリスト内表記
numbers = [num for num in range(5)]
print(numbers)上記のコードは、基本のリスト内表記の例です。
[0, 1, 2, 3, 4]上記は、実行結果です。
このコードでは、for num in range(5) によって、0から4までの数字を順番に取り出し、[num] として新しいリストを作っています。
コード例② 値を変換する
numbers = [num * 2 for num in range(5)]
print(numbers)上記のコードは、値を変換する例です。
[0, 2, 4, 6, 8]上記は、実行結果です。
このコードでは、num * 2 としています。
そのため、、for num in range(5) によって、0から4までの数字を作成し、それらの数字を2倍にして新しいリストを作っています。
コード例③ 条件を付ける
numbers = [num for num in range(10) if num % 2 == 0]
print(numbers)上記のコードは、条件を付ける例です。
[0, 2, 4, 6, 8]上記は、実行結果です。
このコードでは、if num % 2 == 0 によって、偶数だけを取り出しています。
条件を追加すると、必要な値だけをリストにできます。
numbers = [num for num in range(10) if num % 2 == 0 if num < 7]
print(numbers)上記のコードは、先程のコードに、新たに条件を追加した例です。
[0, 2, 4, 6]上記は、実行結果です。
このコードでは、if num < 7 によって、さらに7より小さいの数値だけを取り出しています。
これにより、先程は [0, 2, 4, 6, 8] でしたが、今回は [0, 2, 4, 6] のリストが出力されました。
このように、さらに条件を追加していくこともできます。
通常のfor文との比較
numbers = []
for num in range(5):
numbers.append(num)
print(numbers)上記のコードは、通常のfor文で作成した例です。
この場合、numbers = [] で最初に空リストを作成しています。
次に、for num in range(5): によって、0 から 4 までの数字を順番に取り出しています。
そして、 numbers.append(num) を使って、その数字を空のリストに1つずつ追加しています。
最後に、print(numbers) で完成したリストを表示しています。
numbers = [num for num in range(5)]
print(numbers)上記のコードは、リスト内表記で作成した例です。
どちらも同じ結果になりますが、リスト内表記の方が短く、読みやすいことがあります。
しかし、複雑すぎる処理を無理にリスト内表記で書くと、逆に読みにくくなります。
そのため、for文かリスト内表記にするかは、作成しているコードによって決めるのが良いです。




Comment