【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,
-
Pythonのリストをスタックとキューとして使う方法を徹底解説
本記事では、Python 3.x(およびそれ以前のバージョン)におけるスタック(Stack)とキュー(Queue)という基本的なデータ構造について解説します。それぞれのデータ構造の仕組みや操作方法を、実際のコード例とともにわかりやすく学んでいきましょう。 本記事で扱う主なトピックは以下の通りです。 挿入操作(Push / Enqueue) 削除操作(Pop / Dequeue) 表示・走査(トラバース)操作 前提知識:リストとリスト操作の基礎関連するデータ構造:リスト操作 スタック(Stack)とは スタックでは、オブジェクトが積み重なるように格納され、取り出す際には到着した順序とは逆の順
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c