Pythonの内包表記(Comprehension)とは?リスト・辞書・セット・ジェネレータの使い方を解説
Pythonでは、既存のシーケンスをもとにして新しいシーケンスを作成できます。この手法は「内包表記(Comprehension)」と呼ばれます。内包表記とは、別のシーケンスを使用して、リスト・辞書・セット・ジェネレータといった新しいシーケンスを生成するための、簡潔なコードの書き方です。異なる型のシーケンス間で複数段階の変換を行うことも可能です。
リスト内包表記(List Comprehension)
リスト内包表記では、既存のリストの値を加工しながら新しいリストを作成します。以下の例では、与えられたリストの各要素に3を加算した新しいリストを生成しています。
例
given_list = [x for x in range(5)] print(given_list) new_list = [var+3 for var in given_list] print(new_list)
実行結果
上記のコードを実行すると、次のような出力が得られます。
[0, 1, 2, 3, 4] [3, 4, 5, 6, 7]
辞書内包表記(Dictionary Comprehension)
リスト内包表記と同様の考え方で、リストから辞書を作成することもできます。
例
given_list = [x for x in range(5)]
print(given_list)
#new_list = [var+3 for var in given_list]
new_dict = {var:var + 3 for var in given_list }
print(new_dict)
実行結果
上記のコードを実行すると、次のような出力が得られます。
[0, 1, 2, 3, 4]
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7}
さらに、2つのリストを受け取って新しい辞書を作成することも可能です。zip関数を使うことで、キーとなるリストとバリューとなるリストを組み合わせられます。
例
list1 = [x for x in range(5)]
list2 = ['Mon','Tue','Wed','Thu','Fri']
print(list1)
print(list2)
new_dict ={key:value for (key, value) in zip(list1, list2)}
print(new_dict)
実行結果
上記のコードを実行すると、次のような出力が得られます。
[0, 1, 2, 3, 4]
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
{0: 'Mon', 1: 'Tue', 2: 'Wed', 3: 'Thu', 4: 'Fri'}
セット内包表記(Set Comprehension)
これまでと同じアプローチで、既存のセットやリストから新しいセットを作成できます。以下の例では、既存のセットの各要素に3を加算した新しいセットを生成しています。
例
given_set = {x for x in range(5)}
print(given_set)
new_set = {var+3 for var in given_set}
print(new_set)
実行結果
上記のコードを実行すると、次のような出力が得られます。
{0, 1, 2, 3, 4}
{3, 4, 5, 6, 7}
ジェネレータ内包表記(Generator Comprehension)
既存のリストから新しいジェネレータを作成することもできます。ジェネレータは、すべての要素を最初にメモリへ格納するのではなく、要素が生成されるタイミングで順次メモリを確保するため、メモリ効率に優れています。大量のデータを扱う場合に特に有効です。
例
given_list = [x for x in range(5)]
print(given_list)
new_set = (var+3 for var in given_list)
for var1 in new_set:
print(var1, end=" ")
実行結果
上記のコードを実行すると、次のような出力が得られます。
[0, 1, 2, 3, 4] 3 4 5 6 7
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5