Skip to content

4. リスト・タプル・辞書・集合

Python にはデータを格納するための便利なデータ構造がいくつかあります。この章では、リスト、タプル、辞書、集合について学びます。それぞれの特徴と使い方を理解し、プログラミングの基礎スキルを身につけましょう。

4.1 リスト

リストは、複数のアイテムを順序付けて格納できるデータ構造です。リストはミュータブル(変更可能)なので、要素の追加や削除ができます。リストは角括弧 [] を使って定義します。

4.1.1 リストの作成と基本操作

# リストの作成
fruits = ['apple', 'banana', 'cherry']

# 要素の追加
fruits.append('orange')

# 要素の削除
fruits.remove('banana')

# インデックスを使ったアクセス
print(fruits[0])  # apple

# リストの要素数
print(len(fruits))  # 3

4.1.2 リストのスライス

リストの一部を取り出すことをスライスと呼びます。

# スライスの例
numbers = [0, 1, 2, 3, 4, 5]
print(numbers[1:4])  # [1, 2, 3]

4.2 タプル

タプルは、リストに似ていますが、イミュータブル(変更不可)です。タプルは丸括弧 () を使って定義します。

4.2.1 タプルの作成と利用

# タプルの作成
dimensions = (1920, 1080)

# インデックスを使ったアクセス
print(dimensions[0])  # 1920

# タプルのアンパック
width, height = dimensions
print(f"Width: {width}, Height: {height}")

4.3 辞書

辞書は、キーと値のペアを格納するデータ構造です。辞書は波括弧 {} を使って定義します。

4.3.1 辞書の作成と基本操作

# 辞書の作成
student = {
    'name': 'Alice',
    'age': 20,
    'courses': ['Math', 'Science']
}

# 値の取得
print(student['name'])  # Alice

# 値の追加
student['grade'] = 'A'

# 値の削除
del student['age']

4.3.2 辞書のメソッド

# キーと値の一覧を取得
print(student.keys())  # dict_keys(['name', 'courses', 'grade'])
print(student.values())  # dict_values(['Alice', ['Math', 'Science'], 'A'])

# キーと値のペアを取得
print(student.items())  # dict_items([('name', 'Alice'), ('courses', ['Math', 'Science']), ('grade', 'A')])

4.4 集合

集合は一意な要素を格納するためのデータ構造です。集合は波括弧 {} を使って定義しますが、要素の順序は保証されません。

4.4.1 集合の作成と基本操作

# 集合の作成
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}

# 要素の追加
A.add(5)

# 要素の削除
A.remove(1)

# 和集合
print(A | B)  # {2, 3, 4, 5, 6}

# 積集合
print(A & B)  # {3, 4, 5}

これらのデータ構造を理解し、適切に使いこなすことで、効率的なプログラムを書くことができるようになります。実際にコードを試してみて、使い方に慣れてください。

演習問題

演習 1: リストの操作

空のリストを作成し、以下の操作を順番に行ってください。 1. 'dog', 'cat', 'bird' を追加 2. リストの2番目の要素('cat')を出力 3. 'fish' を追加 4. リストの長さを出力 5. 最初の要素('dog')を削除

解答例
# 空のリストを作成
animals = []

# 要素を追加
animals.append('dog')
animals.append('cat')
animals.append('bird')

# 2番目の要素を出力(インデックスは0から始まるので1)
print(animals[1])  # 出力: cat

# 'fish'を追加
animals.append('fish')

# リストの長さを出力
print(len(animals))  # 出力: 4

# 最初の要素を削除
animals.remove('dog')

print(animals)  # 出力: ['cat', 'bird', 'fish']

演習 2: リストのスライス

numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] というリストから、以下を取り出してください。 1. 最初の3つの要素 2. 最後の3つの要素 3. インデックス2から5までの要素(30, 40, 50, 60)

解答例
numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# 最初の3つの要素
print(numbers[:3])  # 出力: [10, 20, 30]

# 最後の3つの要素
print(numbers[-3:])  # 出力: [80, 90, 100]

# インデックス2から5までの要素
print(numbers[2:6])  # 出力: [30, 40, 50, 60]

演習 3: 辞書の操作

学生の情報を格納する辞書を作成してください。 - 名前(name): 自分の名前 - 年齢(age): 20 - 専攻(major): "Computer Science"

その後、以下の操作を行ってください。 1. GPA(gpa)キーを追加して、値を3.5に設定 2. すべてのキーを出力 3. すべての値を出力

解答例
# 学生情報の辞書を作成
student = {
    'name': '山田太郎',
    'age': 20,
    'major': 'Computer Science'
}

# GPAを追加
student['gpa'] = 3.5

# すべてのキーを出力
print(student.keys())
# 出力: dict_keys(['name', 'age', 'major', 'gpa'])

# すべての値を出力
print(student.values())
# 出力: dict_values(['山田太郎', 20, 'Computer Science', 3.5])

# 辞書全体を確認
print(student)

演習 4: 集合の操作

2つの集合を使って集合演算を行ってください。 - set_a = {1, 2, 3, 4, 5} - set_b = {4, 5, 6, 7, 8}

以下を計算して出力してください。 1. 和集合(すべての要素) 2. 積集合(共通の要素) 3. 差集合(set_a にあって set_b にない要素)

解答例
set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}

# 和集合
print("和集合:", set_a | set_b)
# 出力: 和集合: {1, 2, 3, 4, 5, 6, 7, 8}

# 積集合
print("積集合:", set_a & set_b)
# 出力: 積集合: {4, 5}

# 差集合(set_a にあって set_b にない要素)
print("差集合:", set_a - set_b)
# 出力: 差集合: {1, 2, 3}

# union(), intersection(), difference() メソッドでも可能
print("和集合:", set_a.union(set_b))
print("積集合:", set_a.intersection(set_b))
print("差集合:", set_a.difference(set_b))