2012-02-19 11 views
1
の違いとsimiliarities

可能性の重複:
What's the difference between list and tuples in Python?パイソン:タプルとリスト

アイブ氏はちょうど理論問題だ:私はタプルがちょうど不変リストであると言うなら私はどのように、 を間違っている(または私はない?)?

私はタプルがあるレベルでは不変であることを知っています:もしリスト内に可変オブジェクトを持つタプルがあれば(リスト、pythonオブジェクト、何でも) - それは何とか変更可能です。まだタプル構造では、要素へのポインタは一定のままなので、タプル自体は不変です。私はそれを知っている、あなたはこれを説明する必要はありません。

私が知る限り、変更可能性の他に違いはありません。どちらの型でも、operator +はオペランドの要素で構成された適切な構造体を返します。+ =演算子はうまく動作します。両方とも単純なインデックスでアクセスできます。またはスライスでlen()、map() map(foo、tuple)はタプルではなくリストを返します。私はそのような振る舞いの理由はあるが、それでも言及する価値があると思う)、all()、any()など...

So - 同じ機能、少し異なる構文、主な相違点の違い。そうですか?それとも私は何かが恋しい?

答えて

1

伝統的な分化がタプルはの異種データのために使用されることを意味しているということでした固定長であり、リストは可変長の同種のデータを対象としています。

この区別は近年緩和されています。例えば、タプルはcount()index()のメソッドを持ち、均質なデータにのみ意味があり、isinstance(tuple, collections.Sequence)Trueです。

私の意見では、タプルを不変のリストと考えるのはそれほど遠くないと思います。不変性はそれらをハッシュ可能にすることができるので、辞書やセットのキーとして使用でき、すべてのアイテムはハッシュ可能ですが、変更することはできません。

+2

私は、それらの要素のいずれかがハッシュできない場合にハッシュ可能であるため、ハッシュ可能であると言います。 –

関連する問題