【Python】第7章第1回:リスト内包表記と辞書内包表記
本記事では、Pythonで効率的にデータを生成・操作するためのリスト内包表記と辞書内包表記について学びます。初心者にもわかりやすく解説します。
0. 記事の概要
この記事を読むメリット
- 効率的なデータ処理の習得:短いコードでリストや辞書を作成できる方法を学べます。
- コードの可読性向上:内包表記を使って、より簡潔で明確なコードを書くスキルを得られます。
- 応用力の向上:条件やループを活用した内包表記の実践的な活用方法を理解できます。
この記事で学べること
- リスト内包表記と辞書内包表記の基礎
- 条件付き内包表記の使い方
- 実践的な応用例とパフォーマンスの利点
1. リスト内包表記とは?
1.1 基本構文
リスト内包表記は、簡潔にリストを生成する方法です。基本構文は以下の通りです。
# 基本構文
[式 for 要素 in イテラブル]
1.2 実例
# 例:1から10までの数値を二乗したリストを生成
squares = [x**2 for x in range(1, 11)]
print(squares)
動作解説
range(1, 11)
から数値を取得します。- 各数値を二乗し、新しいリストに追加します。
- 結果として、二乗のリストが出力されます。
2. 辞書内包表記とは?
2.1 基本構文
辞書内包表記は、リスト内包表記と似た構文で辞書を生成する方法です。基本構文は以下の通りです。
# 基本構文
{キー: 値 for 要素 in イテラブル}
2.2 実例
# 例:数値をキーに、その二乗を値とする辞書を生成
squares_dict = {x: x**2 for x in range(1, 11)}
print(squares_dict)
動作解説
range(1, 11)
から数値を取得します。- 数値をキー、二乗を値として辞書に追加します。
- 結果として、キーと値のペアが生成されます。
3. 条件付き内包表記の応用例
3.1 条件を追加する
# 例:偶数のみを含むリストを生成
evens = [x for x in range(1, 11) if x % 2 == 0]
print(evens)
3.2 入れ子構造の内包表記
# 例:掛け算表を生成
multiplication_table = [[x * y for y in range(1, 6)] for x in range(1, 6)]
print(multiplication_table)
4. 練習問題
以下の課題に挑戦してみましょう。
- 1から20までの数値のうち、3で割り切れるものだけを含むリストを作成してください。
- アルファベットのリストを使用し、大文字をキー、小文字を値とする辞書を作成してください。
- 2つのリストを掛け合わせた値を辞書形式で表現してください。
5. 練習問題の解答と解説
問1〜3の解答例
# 問1: 3で割り切れる数値を含むリスト
divisible_by_three = [x for x in range(1, 21) if x % 3 == 0]
print(divisible_by_three)
# 問2: アルファベットの大文字をキー、小文字を値とする辞書
import string
alphabet_dict = {upper: lower for upper, lower in zip(string.ascii_uppercase, string.ascii_lowercase)}
print(alphabet_dict)
# 問3: 2つのリストの掛け合わせを辞書形式で表現
list1 = [1, 2, 3]
list2 = [4, 5, 6]
product_dict = {x: y for x, y in zip(list1, list2)}
print(product_dict)
6. まとめ
本記事では、リスト内包表記と辞書内包表記の基礎、条件付き内包表記の応用例について学びました。これらの知識を活用して、効率的なデータ操作を実現しましょう。