Pythonには、データをまとめて扱うための便利なデータ構造がたくさんあります。
この記事では、タプル・コレクション・シーケンス・アンパックについて、わかりやすく解説します。

前回はこちら
タプル
タプルの基本
タプル(tuple) は、リストと似ていますが、一度作成すると変更できない(イミュータブル)データ型です。
変更を防ぎたいデータ(例:座標や曜日)に適しています。
days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
coordinates = (35.6895, 139.6917) # 緯度・経度
タプルはリストと同じようにインデックスやスライスを使えますが、要素の追加や変更はできません。
print(days[0]) # Monday
print(days[1:4]) # ('Tuesday', 'Wednesday', 'Thursday')
days[0] = "Sunday" # エラー! タプルは変更不可
タプルの活用
- データの変更を防ぎたいとき
- 複数の変数に一度に代入(アンパック)
x, y = (10, 20)
print(x) # 10
print(y) # 20
関数の戻り値を複数の値として扱う
def get_coordinates():
return (35.6895, 139.6917)
latitude, longitude = get_coordinates()
print(latitude, longitude)
コレクション
Pythonには、データをまとめて管理するための「コレクション」 があります。
コレクションとは、複数のデータを1つの変数で管理できるデータ構造のことです。
代表的なコレクションの種類
データ型 | 特徴 |
---|---|
リスト(list) | 順番があり、要素を変更できる ([] ) |
タプル(tuple) | 順番があり、要素を変更できない (() ) |
辞書(dict) | キーと値のペアで管理 ({} ) |
集合(set) | 重複を許さない (set() ) |
シーケンス
Pythonのシーケンス(sequence) は、順番を持つデータ型の総称です。
シーケンスに分類されるデータ型
データ型 | 特徴 |
---|---|
リスト(list) | 順番があり、要素を変更できる ([] ) |
タプル(tuple) | 順番があり、要素を変更できない (() ) |
文字列(str) | 文字の並び(変更不可) |
範囲(range) | range() を使った整数のシーケンス |
シーケンスの基本操作
インデックスで要素を取得
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[-1]) # cherry
スライスで部分取得
numbers = [10, 20, 30, 40, 50]
print(numbers[1:4]) # [20, 30, 40]
len()
で要素数を取得
print(len(numbers)) # 5
in
演算子で要素の存在を確認
print(30 in numbers) # True
print(60 in numbers) # False
アンパック
アンパック(unpacking)とは、シーケンスの要素を複数の変数に同時に代入する機能です。
data = (10, 20, 30) # タプル
a, b, c = data
print(a) # 10
print(b) # 20
print(c) # 30
*
を使ったアンパック
*
を使うと、余った値をリストにまとめることができます。
numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers
print(first) # 1
print(middle) # [2, 3, 4]
print(last) # 5
for文でアンパック
辞書の .items()
を使うと、キーと値を同時に取り出せます。
student_scores = {"math": 80, "english": 90, "science": 85}
for subject, score in student_scores.items():
print(f"{subject}: {score}")
課題8-1
次のタプルの値を3つの変数 a, b, c
に分解し、それぞれを表示してください。
data = (5, 10, 15)
解答例はこちら
a, b, c = data
print(a) # 5
print(b) # 10
print(c) # 15
課題8-2
次のリストをアンパックし、first
に最初の要素、middle
に中央の要素をリストで、last
に最後の要素を代入してください。
numbers = [1, 2, 3, 4, 5, 6, 7]
解答例はこちら
first, *middle, last = numbers
print(first) # 1
print(middle) # [2, 3, 4, 5, 6]
print(last) # 7
課題8-3
次の辞書のキーと値を for
文を使ってアンパックし、それぞれ表示してください。
student_scores = {"math": 85, "english": 90, "science": 95}
出力結果:
math: 85
english: 90
science: 95
解答例はこちら
for subject, score in student_scores.items():
print(f"{subject}: {score}")
次回はこちら