タプル(tuple)

Pythonには,タプルと呼ばれるリストによく似た性質をもつデータ型が用意されている。 タプルは,リストと同様に複数の要素を持ち,インデックスで要素にアクセスできるのだが, 要素の変更はできない。

次のプログラムでは,曜日(英語)をタプルで定義し,定義したタプルdayを用いて 月 水 金(英語)の3要素を出力している。

day.py

day = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
print(day[1], day[3], day[5])
H:\prg1\05> python day.py
Monday Wednesday Friday

次のプログラムでは,1年間の各月の日数をリストとタプルに定義したときの例を示している。 試しに実行して,タプルでは次のように2月の日数(要素数)を変更(代入,assignment)する ことはできないことを確認しなさい。

days.py

#リストdaysに各月の日数を定義して出力
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
print(days)
print(sum(days))   # 1年間の日数を出力

#2月の日数を29に変更して出力
days[1] = 29
print(days)
print(sum(days))   # 1年間の日数を出力

#タプルdaysに各月の日数を定義して出力
days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
print(days)
print(sum(days))   # 1年間の日数を出力

days[1] = 29   #これは誤り!
print(days)
print(sum(days))   # 1年間の日数を出力
H:\prg1\05> python days.py
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
365
[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
366
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
365
Traceback (most recent call last):
  File "tuple.py", line 17, in 
    days[1] = 29
TypeError: 'tuple' object does not support item assignment

C:\Users\nagaoka\Desktop\testp>python tuple.py > out.txt
Traceback (most recent call last):
  File "tuple.py", line 19, in 
    days[1] = 29   #これは誤り!
TypeError: 'tuple' object does not support item assignment