しょっちゅう忘れることを書いておく。
![]() |
66 |
189 views
Pythonの「内包表記」(コンプリヘンション)は、リストや辞書を手軽に生成できる便利な書き方です。コードをシンプルかつ読みやすくできるので、効率よくデータ処理が行えます。この記事では、リスト、辞書、セットの内包表記の基本から実用例までを、初心者向けに分かりやすく紹介します!
内包表記(コンプリヘンション)は、リストや辞書を生成するための短い書き方です。例えば、リスト内包表記を使うと、以下のようにforループを一行で書けます。
# 1から10までの平方数リストを作成
squares = [x ** 2 for x in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
まずは、最もよく使われるリスト内包表記を見てみましょう。
[式 for 変数 in イテラブル if 条件]
次のコードは、1から5までの数字を持つリストを生成します。
numbers = [x for x in range(1, 6)]
print(numbers) # [1, 2, 3, 4, 5]
内包表記でif文を使うと、特定の条件を満たす要素だけを取り出すことができます。
# 偶数だけを取り出す
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # [2, 4, 6, 8, 10]
リストと同じように、辞書も内包表記を使って生成できます。
{キー: 値 for 変数 in イテラブル if 条件}
以下のコードは、1から5までの数字をキー、平方数を値とする辞書を生成します。
squares_dict = {x: x ** 2 for x in range(1, 6)}
print(squares_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
特定の条件を満たすキーと値のペアだけを辞書に追加することも可能です。
# 偶数だけをキーとする辞書
even_squares_dict = {x: x ** 2 for x in range(1, 11) if x % 2 == 0}
print(even_squares_dict) # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
リストや辞書と同様に、セットも内包表記で生成できます。セットは重複しない要素を持つコレクションです。
{式 for 変数 in イテラブル if 条件}
squares_set = {x ** 2 for x in range(1, 11)}
print(squares_set) # {64, 1, 4, 36, 9, 16, 49, 81, 100, 25}
内包表記はネストしたループにも使えます。例えば、2つのリストの要素を組み合わせたペアを生成する場合、次のように書けます。
# 2つのリストの要素を組み合わせたペア
pairs = [(x, y) for x in range(1, 4) for y in range(1, 4)]
print(pairs) # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
複数の条件を追加して、さらに絞り込むことも可能です。
# 1から20のうち、偶数かつ3の倍数の数
filtered_numbers = [x for x in range(1, 21) if x % 2 == 0 and x % 3 == 0]
print(filtered_numbers) # [6, 12, 18]
内包表記を使うと、Pythonのコードがシンプルで効率的になります。慣れてくると、処理が一目で分かりやすくなり、コードの可読性も向上します。リスト、辞書、セットなどで幅広く使えるので、まずは自分のプロジェクトで試してみてくださいね!
Page 61 of 69.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/