Python
 Computer >> コンピューター >  >> プログラミング >> Python

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

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5