タプルとリストの違い

私もすべてを理解しているわけではないのですが、共通点は「両方ともオブジェクトの集合である。」という点です。

違いはリストはオブジェクトの内容を変更できるのに対して、タプルは上書きできないということです。

タプルはリストと同じようにキーではなくオフセット(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

タプルは不変性を持つことに特徴があるので、オブジェクトのリストを使いたいのだけど、プログラム中で変更されることを望まない場合に使う、などの利用例がありそうです。