Pythonのプログラミングにおいて、データを効率的に扱う能力は非常に重要です。この章では、Pythonに組み込まれている強力なコレクション(データ構造)であるリスト、タプル、辞書、セットを学びます。これらのデータ構造は、他の言語における配列、ハッシュマップ、集合などと似ていますが、Pythonならではの便利な特性やメソッドを持っています。これらを理解し、使いこなすことが「Pythonらしい」コードを書くための第一歩です。
リストは、複数の要素を順序付けて格納できるコレクションです。他の言語における「動的配列」に最も近い存在です。
基本的な使い方 (REPL実行例)
リストは非常に柔軟性が高く、Pythonで最も頻繁に使われるデータ構造の一つです。
タプルはリストと非常によく似ていますが、最大の違いはイミュータブル (Immutable)、つまり一度作成したら変更できない点です。
なぜタプルを使うのか? 🤔
基本的な使い方 (REPL実行例)
辞書は、他の言語のハッシュマップや連想配列に相当します。順序ではなく、一意な「キー」を使って「値」にアクセスします。
key: value
の形式でデータを格納します。基本的な使い方 (REPL実行例)
セットは、順序がなく、重複した要素を持たないコレクションです。数学の「集合」の概念に近く、和集合や積集合といった集合演算を高速に行えます。
使いどころ
基本的な使い方 (REPL実行例)
スライシングは、リストやタプルのようなシーケンスから、部分的な要素を効率的に取り出すための非常に強力な機能です。構文は [start:stop:step]
です。
REPL実行例
内包表記は、既存のイテラブルから新しいリスト、辞書、セットを簡潔かつ効率的に生成するためのPythonらしい構文です。for
ループを使うよりも短く、可読性が高いコードを書くことができます。
リスト内包表記
for
ループで書く場合と、リスト内包表記で書く場合を比較してみましょう。
辞書内包表記
セット内包表記
この章では、Pythonでデータを扱うための基本的な4つのコレクションを学びました。それぞれの特性を理解し、状況に応じて適切に使い分けることが重要です。
データ構造 | 構文例 | 変更可能性 | 順序 | 重複 | 主な用途 |
---|---|---|---|---|---|
リスト (List) | [1, 'a', 2] | 可能 (ミュータブル) | あり | 許可 | 順序があり、変更が必要な要素の集まり。 |
タプル (Tuple) | (1, 'a', 2) | 不可能 (イミュータブル) | あり | 許可 | 変更しない(させたくない)データの集まり、辞書のキー。 |
辞書 (Dictionary) | {'key': 'value'} | 可能 (ミュータブル) | あり (Python 3.7+) | キーは不許可 | キーと値のペアでデータを管理。 |
セット (Set) | {1, 'a', 2} | 可能 (ミュータブル) | なし | 不許可 | 重複を除き、要素の存在確認や集合演算を高速に行う。 |
加えて、スライシングを使えばシーケンス(リストやタプル)から部分的な要素を柔軟に取得でき、内包表記を利用すれば、これらのコレクションを一行で効率的かつPythonらしく生成できます。これらのツールは、あなたのコードをより簡潔で強力なものにしてくれるでしょう。
ある店舗の商品のリストがあります。このリストから、価格が500円以上の商品だけを抽出し、その名前だけを新しいリストに格納してください。
ヒント:
リスト内包表記と、辞書の値にアクセスする方法 (product['price']
) を組み合わせ、if
条件を追加してみましょう。
python practice3_1.py
2つのクラブ活動、「数学クラブ」と「科学クラブ」のメンバーリストがあります。セット(集合)の機能を使って、以下のメンバーリストを作成してください。
a. 両方のクラブに所属しているメンバー b. 少なくともどちらか一方のクラブに所属している全メンバー c. 数学クラブにのみ所属しているメンバー
ヒント:
セットの積集合 (&
)、和集合 (|
)、差集合 (-
) 演算子を使います。
python practice3_2.py