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 リストのスライス¶
リストの一部を取り出すことをスライスと呼びます。
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)
解答例
演習 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))