私はしばらくの間、リストとタプルの主な違いはリストが変更可能であり、タプルはそうではないことが分かっています。それ以外にも、さまざまな方法がありますが、リストやタプルについてはほとんど分かりません。それ以外に違いはありますか? Python 3のリストにタプルを使用する場合、の長所/短所(不変性とは別に)がありますか?より速いアクセス時間を持つか、またはより小さいメモリサイズを持つか、または他の方法より多くの方法を含んでいますか?内部構造はどのように異なっていますか?または、タプルは不変のリストだけですが、何もありません。Pythonのリストとタプルの差(マイナス不変性)?
7
A
答えて
7
リストとタプルの両方は、要素オブジェクトへの参照の配列として内部的に実装されています。このようにして、両方を索引付けすることができ、両方とも各要素に同じ量のメモリーを必要とします。内部的には、両方とも均質(型なし参照)です。論理的には、どちらも異種(自動逆参照、型はターゲットオブジェクトにバインドされています)です。
リストは変更可能なので、内部配列は動的配列です。タプルは変更できないので、内部的には固定サイズの配列です。その観点から、タプルは簡単です。
これは速いかどうかで、timeitモジュールを使用して具体的な状況を測定できます。
タプルは、格納されている参照の数と値に関してのみ不変であることに注意してください。タプル要素の1つとしてリストが使用されている場合、リストの内容は変更できます。このように、論理的には、タプルの内容は一定ではありません(そのようなタプルはハッシュ可能ではありません)。
目的に適したタイプを使用してください。厳しい選好はありません。状況によって異なります。
4
両方でdirを実行してください - かなり異なるメソッドリスト(以下に示すpop)。タプルは「ポップ」、「回数」、「拡張」、「インデックス」、「挿入」、「追加」
>>> alist = [1,2,3]
>>> atuple = (1,2,3)
>>> alist.pop()
3
>>> atuple.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'pop'
速いかもしれ、「削除」、「リバース」、「ソート」、すべての利用可能です不変性を考えれば、タプルは意味がない。
哲学的には、リストは同質であると予想され、タプルの期待はありません。
関連する問題
- 1. テラデータのマイナスとの差は
- 2. Pythonのリスト、タプルとループ
- 3. のPython:タプルのリストからタプル
- 4. DB2のSQL - CASEの差(マイナス)
- 5. Pythonリストのリストをタプルのリストに変換する
- 6. Python第7章リストとタプル
- 7. Pythonタプルのリストを単一タプルに変換する
- 8. タプルのリストのPython pool.map
- 9. ポイントのリストをPythonのタプルのリストに変換する
- 10. タプルの差MDX
- 11. Pythonは、リスト内のタプル
- 12. Pythonでの不変性とスレッドの安全性
- 13. Scalaの分散と不変性/不変性との関係
- 14. 属性を置き換える名前付きタプルのPythonリスト
- 15. Python - リストのリスト(変更可能性)
- 16. リストのリストをタプルのタプルに変換するには?
- 17. 差分リストに不完全
- 18. タプル変換のリストへのリスト
- 19. タプルをリストのリストに変換する
- 20. リスト内のタプルの要素の差を追加する
- 21. 不変のクラスと特性?
- 22. リストとタプル
- 23. はリストとタプル
- 24. パイソン:タプルとリスト
- 25. ReactJSと不変性
- 26. なぜPythonの文字列とタプルは不変になりますか?
- 27. Pythonの:私はタプルのリストをマージしようとしていますタプル
- 28. "リストのタプル"、Pythonからjavascriptへ
- 29. タプルをPythonのリストに変換できません
- 30. dict値のリストをPython 3.4.4でタプルに変換するには?
[リストとタプルの違いは何ですか?](http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples) –