■ Python 3
Pythonで最初にハマったのが、「タプル」と「リスト」の違い。
似ているようで違うところも多いので、ややこしいです。
★ タプル (tuple)
タプルは、複数の要素が決まった順番で並んだ値で、
tuple = 'tokyo', 'shinagawa'
のようにカンマ区切りで記載。
可読性(見易さ)から、丸括弧 ( ) で囲むのが一般的なようです。
tuple = ('tokyo', 'shinagawa')
タプルは、イミュータブル(immutable)なデータ型であるため、要素の変更ができません。
そのため、要素を変更するという形ではなく、作り変える…ということをしないといけないのが大きな特徴です。
あとは、タプル要素同士の演算は可能なようです。
ただ、これは元のタプル要素を書き換えているわけではなく、新たなタプル型のデータを作り直しているようです。
実際にオブジェクトIDを id( ) で取ってみると…
tuple1の id は「2128481772736」→「2128482246592」に変わっているので、オブジェクト自体が変わっている(作り直されている)というのがわかります。
★ リスト (list)
リストは、タプルと違って、ミュータブル(mutable)なデータ型であるため、要素の直接更新が可能。
tupleだとエラーになってできなかった操作も、リストだと可能です。
またタプルと同じく、同じデータ型同士の演算は可能。
あと、更新時も、元の要素をそのまま更新しているようで、
更新前と更新後のオブジェクトIDも一致していました。
こうやってみると、全然違うので面白いなとは思います。
ちなみにGeminiに聞いてみた感じだと…
タプルとリストの違い
特徴 | タプル | リスト |
---|---|---|
変更可否 | 変更不可 (イミュータブル) | 変更可能 (ミュータブル) |
用途 | データの集合を固定したい場合、関数のパラメータなど | データを動的に変更したい場合、順序のあるデータの集合 |
その他 | ハッシュ可能 (辞書のキーに使える) | ハッシュ不可 |
用途としては、やはりそのデータが、複数の要素からなる決まったデータなんだということを表すかなど、そういったことに使うというのがメインになるのでしょうか。
もちろん、処理性能など細かい部分では、タプルのほうが効率がよいなどあるみたいですが、やはり慣れたり、考え方を理解したりしないと、うまく使いこなすのは難しいでしょうね。