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

【Python入門】内包表記の使い方を実例で解説|リスト・辞書・セット・ジェネレータ

Pythonの内包表記(comprehension)を使うと、シーケンス(リスト・辞書・セットなど)を簡潔かつ効率的に構築できます。本記事では、内包表記による各種シーケンスの作成方法と、その要素へのアクセス方法を具体的なコード例とともに解説します。

Pythonで利用できる主な内包表記は、次の4種類です。

  • リスト内包表記
  • 辞書内包表記
  • セット内包表記
  • ジェネレータ内包表記

リスト内包表記

リストの作成方法や要素へのアクセス方法は数多くあります。ここでは、代表的なパターンを順番に見ていきましょう。

forループを使う方法

まずは、空のリストを作成し、forループで要素を1つずつ追加する最も基本的な方法です。

# 空のリストを作成
listA = []
# リストに要素を追加
for n in range(4, 9):
    listA.append(n ** 3)
print("List using for loop:\n", listA)

出力

上記のコードを実行すると、次の結果が得られます。

List using for loop:
[64, 125, 216, 343, 512]

別のリストから作成する方法

既存のリストから条件に合う要素だけを取り出し、新しいリストを直接生成することもできます。これがリスト内包表記の典型的な使い方です。

# 元となるリスト
listA = [12,9,32,45]
# 与えられたリストを表示
print("Given list:\n ",listA)
new_list = [n for n in listA if n % 3 == 0]
print("New List:\n", new_list)

出力

上記のコードを実行すると、次の結果が得られます。

Given list:
[12, 9, 32, 45]
New List:
[12, 9, 45]

辞書内包表記

辞書は「キーと値のペア(key-value pair)」という形式で要素を保持します。ここでは、そのような辞書の作成方法を紹介します。

forループとzipを使う方法

キーとなるリストと値となるリストの2つを用意し、それらをzip関数で結合することで、新しい辞書を作成できます。

Day = ['Mon', 'Tue', 'Wed']
Time= ['2pm','10am','11am']
# 空の辞書を作成
dictA = {}
# forループを使用
for (key, value) in zip(Day, Time):
    dictA[key] = value
print("Dictionary using for loop:\n",dictA)

出力

上記のコードを実行すると、次の結果が得られます。

Dictionary using for loop:
{'Mon': '2pm', 'Tue': '10am', 'Wed': '11am'}

リストの要素をキーとして使う方法

Pythonのリストの要素をそのまま辞書のキーとして使用し、式によって各キーに対応する値を導き出す方法です。

listA = [3,5,4,8,9,2]
dictA = {}
# forループを使用
for key in listA:
    if key % 2 != 0:
        dictA[key] = key ** 3
print("Dictionary using for loop:\n",dictA)

出力

上記のコードを実行すると、次の結果が得られます。

Dictionary using for loop:
{3: 27, 5: 125, 9: 729}

セット内包表記

Pythonのセット(集合)は、重複しない一意な要素のみを保持するデータ構造です。リストとほぼ同じ要領で作成できます。

forループを使う方法

リストに対して条件を適用して要素を抽出し、addメソッドを使って空のセットへ追加していきます。

listA = [12, 4, 25, 12,4,9]
setA = set()
# forループを使用
for x in listA:
    if x % 3 == 0:
        setA.add(x)
print("Set using for loop:", setA)

出力

上記のコードを実行すると、次の結果が得られます。

Set using for loop: {9, 12}

forとinを使う方法

波括弧 {} の中に直接forループを記述し、その結果をセットに代入する方法です。ループ内ではリストの要素を使用します。

listA = [12, 4, 25, 12,4,9]
# セット内包表記を使用
setA = {x for x in listA if x % 2 == 0}
print("Set using for loop:", setA)

出力

上記のコードを実行すると、次の結果が得られます。

Set using for loop: {12, 4}

ジェネレータ内包表記

この方法では、リストから要素を取り出し、特定の条件を適用したうえでforループに渡します。結果はシーケンスに代入され、この手法はジェネレータ内包表記と呼ばれます。ジェネレータは値を必要なときに都度生成するため、大量のデータを扱う場合でもメモリ効率に優れているのが特徴です。

listA = [12, 4, 25, 12,4,9]
genrtr = (var for var in listA if var % 2 == 0)
print("Values using generator comprehensions:\n")
for x in genrtr:
    print(x, end=',')

出力

上記のコードを実行すると、次の結果が得られます。

Values using generator comprehensions:
12,4,12,4,
  1. Pythonのリストをスタックとキューとして使う方法を徹底解説

    本記事では、Python 3.x(およびそれ以前のバージョン)におけるスタック(Stack)とキュー(Queue)という基本的なデータ構造について解説します。それぞれのデータ構造の仕組みや操作方法を、実際のコード例とともにわかりやすく学んでいきましょう。 本記事で扱う主なトピックは以下の通りです。 挿入操作(Push / Enqueue) 削除操作(Pop / Dequeue) 表示・走査(トラバース)操作 前提知識:リストとリスト操作の基礎関連するデータ構造:リスト操作 スタック(Stack)とは スタックでは、オブジェクトが積み重なるように格納され、取り出す際には到着した順序とは逆の順

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c