2012-03-15 14 views

答えて

24

いくつかの理由:彼らはhashableではありませんので、リストのような

  • 可変オブジェクトは、Pythonで辞書のキーやセット・メンバーとして使用することはできません。リストにその内容に基づいてメソッド__hash__が与えられた場合、内容が変更されると返される値は変更され、ハッシュ値の契約に違反します。
  • Pythonに変更可能な配列しかない場合、シーケンスを受け入れるコンストラクタは、シーケンスを他のコードによって変更できないように、それらをコピーする必要があることがよくあります。コンストラクターは、タプルを受け入れるだけで防御的なコピーを避けることができます。さらに、シーケンス引数をtupleメソッドで渡すことができます。このメソッドは、必要なときにのみコピーします。
+0

ハッシュ値は変更できますか?ハァッ? – wim

+2

リストが変更されると、wim - > hash vaulesが変化します。リストのどこかにrefがある場合、リストは変更できます。 –

+0

リストはハッシュできません。 – wim

1

それ以外の場合は、不変のシーケンスタイプはありません。変更可能なタプルが必要な場合は、リストを使用するだけです。

さまざまなパフォーマンス特有のものがある場合は不変型を使用し、タプルキーの場合はdictを簡単に使用できません。

関連する問題