タプルとリストの違い
私もすべてを理解しているわけではないのですが、共通点は「両方ともオブジェクトの集合である。」という点です。
違いはリストはオブジェクトの内容を変更できるのに対して、タプルは上書きできないということです。
タプルはリストと同じようにキーではなくオフセット(1とか2とか)によってアクセスできますが、以下のように tuple[1] = 'aaa' というようにオブジェクトの内容を上書きすることができません。違いを以下のコードの例にしてみました。
list = ['python', 'perl', 'ruby'] print 'list[0] = ', list[0] # pythonと出力 tuple = ('python', 'perl', 'ruby') print 'tupel[0] = ', tuple[0] # pythonと出力 list[1] = 'php' print 'list[1] = ', list[1] # phpと出力 tuple[1] = 'php' # ここでエラー # 以下のようにエラーが出ます。 # tuple[1] = 'php' # TypeError: 'tuple' object does not support item assignment
タプルは不変性を持つことに特徴があるので、オブジェクトのリストを使いたいのだけど、プログラム中で変更されることを望まない場合に使う、などの利用例がありそうです。