Pythonには沢山のデータを扱うのに便利なリストがあります。
リスト
words = ["tomato", "lemon", "melon"]
これとほぼ似たような記述をもつタプル(tuple)というものも存在します。
タプル
words = ("tomato", "lemon", "melon")
記述に関して言えば、[ ] を用いてデータ列をくくるか、( ) を用いてくくるかの違いです。
利用に関しては、リスト・タプルともに word[1] などのように添え字を使って個別にアクセスできます。
リストとタプルの大きな違い
リストとタプルの一番大きな違いは、タプルで記述するとデータの書き換えが出来ない点です。
一度設定した値をプログラム中で書き換えて欲しくないデータの時はタプルを利用します。
他のプログラミング言語でいうとconst宣言などに近いです。
例えばリストを使って一部のデータを書き換えるには以下のようになりますが...
list_kakikae.py
# リストの一部データを書き換え
words = ["tomato", "lemon", "melon"]
print(words)
words[1] = "apple" # 書き換え
print(words)
実行結果
['tomato', 'lemon', 'melon']
['tomato', 'apple', 'melon']
上記プログラムをタプルに置き換えて実行すると...
tuple_kakikae.py
# タプルのデータを書き換えてみる(6行目で実行エラー)
words = ("tomato", "lemon", "melon")
print(words)
words[1] = "apple"
print(words)
次のように6行目でエラーが発生します。
エラーメッセージの内容
words[1] = “apple”
TypeError: ‘tuple’ object does not support item assignment
最初に設定したデータを後で書き換える必要がある場合は、タプルではなくリストを使いましょう。
タプルを利用するメリット
一度宣言したデータは書き換え出来ないタプルですが、メリットがあります。
タプルで宣言したデータは処理速度がリストより速いという事です。
検索などで何万件というデータを利用するのであれば、タプルを利用するメリットはあります。
ただし、リストで利用できたようなinsert(挿入), reverse(反転)などの便利な演算メソッドは利用できません。len(words)などのようにlen関数は利用可能です。
words = (“tomato”, “lemon”, “melon”)
words.reverse()
詳しくはPython公式ドキュメントをご覧ください。
リストとタプルの相互変換は可能
リストに設定したものを検索したくなったが、件数が多いので実行速度を上げたいとか、一時的にリストをタプルにしたい、あるいはタプルを一時的にリストにしたい。そのようなときは相互に変換が可能です。
リストからタプルへの変換
tuple() を利用します。
引数にはリスト型のオブジェクトを指定します。
list_to_touple.py
# リストをタプルに変換する
words = ["tomato", "lemon", "melon"]
words_tuple = tuple(words) # wordsをタプル型に変換
print(words)
print(words_tuple)
実行結果
['tomato', 'lemon', 'melon'] ('tomato', 'lemon', 'melon')
タプルをリストに変換
list() を利用します。
引数にはタプル型のオブジェクトを指定します。
touple_to_list.py
# タプルをリストに変換する
words = ("tomato", "lemon", "melon")
words_list = list(words) # wordsをリスト型に変換
print(words)
print(words_list)
実行結果
('tomato', 'lemon', 'melon') ['tomato', 'lemon', 'melon']
わたしはずっとタプルをtoupleだと思っていました。
tupleが正解ですね!
以上、Python:タプルについて(リストとの違い)でした。
コメント