💨
Pythonの初心者レッスンーーPython内包表記
シーリズの目次
Pythonの初心者レッスンをここにまとめています。
Python内包表記(comprehensions)は、リスト、セット、辞書、およびジェネレータを簡潔かつ効率的に作成するための構文です。内包表記を使用すると、少ないコード行でシーケンスを生成、フィルタリング、および変換できます。主に以下の種類があります:リスト内包表記、セット内包表記、辞書内包表記、およびジェネレータ式。
リスト内包表記
リスト内包表記を使用すると、新しいリストを生成するための簡潔な方法が提供されます。
基本構文
[式 for 変数 in イテラブル]
[式 for 変数 in イテラブル if 条件]
例
# 1から10までの整数の2乗のリストを作成
squares = [x**2 for x in range(1, 11)]
print(squares) # 出力: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 偶数だけを含むリストを作成
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 出力: [2, 4, 6, 8, 10]
セット内包表記
セット内包表記を使用すると、新しいセットを生成するための簡潔な方法が提供されます。
基本構文
{式 for 変数 in イテラブル}
{式 for 変数 in イテラブル if 条件}
例
# 1から10までの整数の2乗のセットを作成
squares_set = {x**2 for x in range(1, 11)}
print(squares_set) # 出力: {64, 1, 36, 4, 100, 9, 16, 81, 49, 25}
# 重複を取り除いた文字のセットを作成
unique_chars = {char for char in "hello world"}
print(unique_chars) # 出力: {'d', 'h', 'l', 'r', 'o', 'e', ' ', 'w'}
辞書内包表記
辞書内包表記を使用すると、新しい辞書を生成するための簡潔な方法が提供されます。
基本構文
{キー式: 値式 for 変数 in イテラブル}
{キー式: 値式 for 変数 in イテラブル if 条件}
例
# 1から5までの整数をキー、2乗を値とする辞書を作成
squares_dict = {x: x**2 for x in range(1, 6)}
print(squares_dict) # 出力: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 文字列の長さをキー、文字列を値とする辞書を作成
words = ["apple", "banana", "cherry"]
length_dict = {word: len(word) for word in words}
print(length_dict) # 出力: {'apple': 5, 'banana': 6, 'cherry': 6}
ジェネレータ式
ジェネレータ式を使用すると、新しいジェネレータを生成するための簡潔な方法が提供されます。ジェネレータはメモリ効率が良く、要素を逐次処理します。
基本構文
(式 for 変数 in イテラブル)
(式 for 変数 in イテラブル if 条件)
例
# 1から10までの整数の2乗を生成するジェネレータ
squares_gen = (x**2 for x in range(1, 11))
print(squares_gen) # 出力: <generator object <genexpr> at 0x...>
# ジェネレータから要素を取得
for square in squares_gen:
print(square)
内包表記でのif...else の使用
内包表記内で条件に基づいて異なる値を生成することもできます。
# 1から10までの整数の中で、偶数ならそのまま、奇数ならその2倍を含むリストを作成
processed_numbers = [x if x % 2 == 0 else x * 2 for x in range(1, 11)]
print(processed_numbers) # 出力: [2, 2, 6, 4, 10, 6, 14, 8, 18, 10]
Discussion