概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者: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
を得ることはできない。