Python

【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)
動作解説
  1. range(1, 11)から数値を取得します。
  2. 各数値を二乗し、新しいリストに追加します。
  3. 結果として、二乗のリストが出力されます。

2. 辞書内包表記とは?

2.1 基本構文

辞書内包表記は、リスト内包表記と似た構文で辞書を生成する方法です。基本構文は以下の通りです。

# 基本構文
{キー: 値 for 要素 in イテラブル}

2.2 実例

# 例:数値をキーに、その二乗を値とする辞書を生成
squares_dict = {x: x**2 for x in range(1, 11)}
print(squares_dict)
動作解説
  1. range(1, 11)から数値を取得します。
  2. 数値をキー、二乗を値として辞書に追加します。
  3. 結果として、キーと値のペアが生成されます。

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. 1から20までの数値のうち、3で割り切れるものだけを含むリストを作成してください。
  2. アルファベットのリストを使用し、大文字をキー、小文字を値とする辞書を作成してください。
  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. まとめ

本記事では、リスト内包表記と辞書内包表記の基礎、条件付き内包表記の応用例について学びました。これらの知識を活用して、効率的なデータ操作を実現しましょう。