タプルがやっぱりまだ分からない

Haskellの時でも分からなかったタプル
タプル=組これは分かるのです
オブジェクトとインデックスが組になってるんですよね?
そこでいろいろ試してみました

>>> t = (y,u,k,k,y)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined

なるほど文字はシングルコーテーションでくくって下さいってことですね
キーとして使うからかな?
良く分からないけどまぁ後で聞くとして・・・

>>> t = ('y','u','k','k','y')
>>> t
('y', 'u', 'k', 'k', 'y')
>>> t[2:4]
('k', 'k')
>>> t[0:4]
('y', 'u', 'k', 'k')
>>> t2 = (1,2,3,4,5)
>>> t2
(1, 2, 3, 4, 5)
>>> t3 = t + t2
>>> t3
('y', 'u', 'k', 'k', 'y', 1, 2, 3, 4, 5)
>>> t4 = t2 + t
>>> t4
(1, 2, 3, 4, 5, 'y', 'u', 'k', 'k', 'y')
>>> t5 = t2 + (100,1000,10000)
>>> t5
(1, 2, 3, 4, 5, 100, 1000, 10000)

コレでスライスが使える事とタプル同士の足し算ができるけど
内容は変わらずに連結しただけだという事が分かります
では足し算が出来るなら掛け算もできそうなので試してみました

>>> t6 = t*3
>>> t6
('y', 'u', 'k', 'k', 'y', 
'y', 'u', 'k', 'k', 'y', 
'y', 'u', 'k', 'k', 'y')

では次は要素の追加と削除

>>> t[3] = 'python'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t
('y', 'u', 'k', 'k', 'y')
>>> del t[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> t
('y', 'u', 'k', 'k', 'y')

要素の追加削除などは出来ないし内容も変わらない
とりあえず今分かっているタプルの特徴は

インデックスで要素を管理
スライスを使って複数の要素を指定して取り出せる
足し算と掛け算が出来る
要素の追加&要素の削除が出来ない

こんな感じでしょうか
最後にリストとタプルは型変換が出来るようなのでチェック

>>> t = ('y','u','k','k','y')
>>> t
('y', 'u', 'k', 'k', 'y')
>>> a = list(t)
>>> a
['y', 'u', 'k', 'k', 'y']
>>> tt = tuple(a)
>>> tt
('y', 'u', 'k', 'k', 'y')

型変換は結構苦手なのでコツコツ頑張りますが
今回は楽に型変換が出来たので嬉しいな♪
もしタプルに要素を追加したかったら1回リストに型変換してから
要素を追加してまたタプルに戻すってのもありかなと思いました
削除の場合も同じですよね☆
けどやっぱりタプルどんな時に使うの〜?とか利点とかは
まだまだ分からないです・・・