Cou氏の徒然日記

ほのぼの日記ブログです。

Python3の学習 その4 (タプルとリスト)

Python

Pythonで最初にハマったのが、「タプル」と「リスト」の違い。

似ているようで違うところも多いので、ややこしいです。

★ タプル (tuple)

タプルは、複数の要素が決まった順番で並んだ値で、

 tuple = 'tokyo', 'shinagawa'

のようにカンマ区切りで記載。

可読性(見易さ)から、丸括弧 ( ) で囲むのが一般的なようです。

 tuple = ('tokyo', 'shinagawa')

 

タプルは、イミュータブル(immutable)なデータ型であるため、要素の変更ができません。

 

そのため、要素を変更するという形ではなく、作り変える…ということをしないといけないのが大きな特徴です。

 

あとは、タプル要素同士の演算は可能なようです。

ただ、これは元のタプル要素を書き換えているわけではなく、新たなタプル型のデータを作り直しているようです。

 

実際にオブジェクトIDを id( ) で取ってみると…

tuple1の id は「2128481772736」→「2128482246592」に変わっているので、オブジェクト自体が変わっている(作り直されている)というのがわかります。

 

★ リスト (list)

リストは、タプルと違って、ミュータブル(mutable)なデータ型であるため、要素の直接更新が可能。

tupleだとエラーになってできなかった操作も、リストだと可能です。

 

またタプルと同じく、同じデータ型同士の演算は可能。

 

あと、更新時も、元の要素をそのまま更新しているようで、

更新前と更新後のオブジェクトIDも一致していました。

 

こうやってみると、全然違うので面白いなとは思います。

 

ちなみにGeminiに聞いてみた感じだと…

タプルとリストの違い

特徴 タプル リスト
変更可否 変更不可 (イミュータブル) 変更可能 (ミュータブル)
用途 データの集合を固定したい場合、関数のパラメータなど データを動的に変更したい場合、順序のあるデータの集合
その他 ハッシュ可能 (辞書のキーに使える) ハッシュ不可

 

用途としては、やはりそのデータが、複数の要素からなる決まったデータなんだということを表すかなど、そういったことに使うというのがメインになるのでしょうか。

もちろん、処理性能など細かい部分では、タプルのほうが効率がよいなどあるみたいですが、やはり慣れたり、考え方を理解したりしないと、うまく使いこなすのは難しいでしょうね。