概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
タプルというコレクションについて
- 順序付きコレクションの一種
- その性質はリストに類似する
- 一度生成したタプルの内容は、後から変更することができない
- このような性質を持つオブジェクトは「イミュータブルなオブジェクト」と呼ばれる
- タプルはハッシュ化可能
- 例えば、辞書のキーとしてタプルを用いることができる
- 一方で、リストはハッシュ化不可
- タプルを表すリテラル記法は
()である- これに対し、リストを表すリテラル記法は
[]である
- これに対し、リストを表すリテラル記法は
タプルに関するコード例
vowels = list('aeiou')
vowels2 = tuple('aeiou')
print(type(vowels))
# => <class 'list'>
print(type(vowels2))
# => <class 'tuple'>
↑同じ文字列からリストとタプルを生成し、それぞれの型を出力させた例。
vowels = list('aeiou')
vowels2 = tuple('aeiou')
print(vowels)
# => ['a', 'e', 'i', 'o', 'u']
print(vowels2)
# => ('a', 'e', 'i', 'o', 'u')
↑順序付きコレクションの[]はリストであることを表す。()はタプルであることを表す。
vowels = list('aeiou')
vowels[2] = 'I'
print(vowels)
# => ['a', 'e', 'I', 'o', 'u']
vowels2 = tuple('aeiou')
vowels2[2] = 'I'
# => TypeError: 'tuple' object does not support item assignment
print(vowels2)
# => ('a', 'e', 'i', 'o', 'u')
↑リストの内容は変更できるが、タプルの内容は変更できない。
vowels2 = tuple('aeiou')
print(hash(vowels2))
# => -2063250890487547481 # ※一例
vowels = list('aeiou')
print(hash(vowels))
# => TypeError: unhashable type: 'list'
↑タプルのhashを得ることはできるが、リストのhashを得ることはできない。