01 / 07
カンマで並べた組
() の中に値をカンマで並べたものを タプル と呼ぶよ。
見た目はリストとよく似ている。ちがうのはカッコの形だけ——[] がリスト、() がタプルだね。表示するときも () のまま出てくるよ。
sunpou = (150, 3)print(sunpou)実行結果
(150, 3)
くり返しとデータの持ち方
INPUT · スライド
01 / 07
() の中に値をカンマで並べたものを タプル と呼ぶよ。
見た目はリストとよく似ている。ちがうのはカッコの形だけ——[] がリスト、() がタプルだね。表示するときも () のまま出てくるよ。
sunpou = (150, 3)print(sunpou)実行結果
(150, 3)
02 / 07
中身の取り出しかたは、リストとまったく同じ。0から数える番号で引くし、-1 で末尾も取れる。
スライスも同じように使える。「並んでいるものを同じ書きかたで扱う」という Python の考えかたが、ここにも出ているよ。
sunpou = (150, 3, 20)print(sunpou[0])print(sunpou[-1])print(sunpou[0:2])実行結果
150 20 (150, 3)
03 / 07
ではリストと何がちがうのか。中身を書きかえようとするとエラーになるんだ。
リストなら kudamonos[0] = "みかん" で入れかえられた。タプルはそれができない。足すことも消すこともできないよ。
sunpou = (150, 3)sunpou[0] = 200実行結果
TypeError: 'tuple' object does not support item assignment
04 / 07
「できないこと」がなぜ利点になるのか、不思議に思うかもしれない。
答えは、変わってほしくないものを、変わらないと保証できるから。画面の大きさ、曜日の並び、地図の座標——うっかり書きかえてしまったら困るものがある。タプルにしておけば、まちがえた瞬間にエラーで気づけるんだ。
変える予定があるならリスト、無いならタプル。これが選びかたの目安だよ。
youbis = ("げつ", "か", "すい")for youbi in youbis: print(youbi)実行結果
げつ か すい
05 / 07
ここは必ずつまずくところ。要素が1つのタプルは (1,) と書く。うしろにカンマが要るんだ。
(1) と書くと、それはただの 1。カッコは計算の順番を変えるためのカッコとして読まれてしまう。
つまりタプルを作っているのはカッコではなくカンマなんだよ。
hitotsu = (1,)print(hitotsu)kazu = (1)print(kazu)実行結果
(1,) 1
06 / 07
カンマが本体なので、カッコは省いても書ける。sunpou = 150, 3 でもタプルになるよ。
逆向きもできる。tate, yoko = sunpou と書くと、中身を2つの変数に分けて受け取れる。
これ、どこかで見たね。for kagi, atai in hito.items(): がまさにこの形。items() が返していた組はタプルだったんだよ。
sunpou = 150, 3print(sunpou)tate, yoko = sunpouprint(tate)print(yoko)実行結果
(150, 3) 150 3
07 / 07
最後に整理しよう。
[] … あとから足す・消す・入れかえる。件数が増えるもの() … 作ったら変えない。中身の意味が位置で決まっているもの名簿はリスト、座標はタプル。迷ったらリストでいいけれど、「これは変わらない」と言い切れるならタプルのほうが安全だよ。
これでこのグループはおしまい。番号で引くリスト、名前で引く辞書、変わらない組のタプル——3つの入れ物が手に入ったね。次はこれらとくり返しを全部使う総合演習だよ。
hito = {"namae": "ゆい", "sunpou": (150, 42)}print(hito["sunpou"])実行結果
(150, 42)