用於實現Python內置列表數據類型的典型底層數據結構是什麼?Python列表的底層數據結構是什麼?
54
A
回答
42
列表對象實現爲 數組。它們針對快速 固定長度操作進行了優化,併爲pop(0)和 插入(0,v)操作產生了存儲器移動成本,這些成本更改了 底層數據表示的大小和位置。
參見: http://docs.python.org/library/collections.html#collections.deque
順便說一句,我覺得很有趣的是,在數據結構的Python教程推薦使用POP(0)來模擬一個隊列,但沒有提及O(N)或雙端隊列選項。
http://docs.python.org/tutorial/datastructures.html#using-lists-as-queues
23
CPython的:
typedef struct {
PyObject_VAR_HEAD
/* Vector of pointers to list elements. list[0] is ob_item[0], etc. */
PyObject **ob_item;
/* ob_item contains space for 'allocated' elements. The number
* currently in use is ob_size.
* Invariants:
* 0 <= ob_size <= allocated
* len(list) == ob_size
* ob_item == NULL implies ob_size == allocated == 0
* list.sort() temporarily sets allocated to -1 to detect mutations.
*
* Items must normally not be NULL, except during construction when
* the list is not yet visible outside the function that builds it.
*/
Py_ssize_t allocated;
} PyListObject;
如可在下面的行中可以看出,該列表被聲明爲指針數組以PyObjects
。
PyObject **ob_item;
9
在Jython implementation,這是一個ArrayList<PyObject>
。
相關問題
- 1. std :: map的底層結構是什麼?
- 2. C#集合的一般區別是什麼?底層數據結構是什麼?
- 3. 什麼是ZeroMQ底層設計架構
- 4. 底層數據庫數據組實現的是什麼?
- 5. 什麼是此層次結構的基於對象的最佳數據結構?
- 6. python數據協調腳本的數據結構是什麼?
- 7. Python數據類型,它是什麼樣的數據結構?
- 8. WCMS的層次結構是什麼?
- 9. 什麼是UICollectionView的層次結構?
- 10. 2-prop排序列表的正確數據結構是什麼?
- 11. Python分層結構QcomboBox:清理列表
- 12. LINQ是否利用底層數據結構?
- 13. 什麼是數據採集層和彈簧結構mvc
- 14. 什麼數據結構是否將C#類「列表」默認爲?
- 15. android - 什麼是視圖層次結構?
- 16. 什麼是「類層次結構:。
- 17. 什麼是LazyTreeGridStoreModel的數據結構?
- 18. 這是什麼樣的數據結構?
- 19. Ruby數組是什麼數據結構?
- 20. 什麼數據結構應該用於分層數據?
- 21. 正則表達式當底層結構是不同的R
- 22. 每個Python數據結構的功能是什麼?
- 23. Scala中的「底層類型」是什麼?
- 24. `mkvirtualenv`命令的底層是什麼?
- 25. graphql的底層後端是什麼?
- 26. 什麼是分層數據
- 27. 報表層次結構數據的下拉列表
- 28. 這是什麼php數據結構?
- 29. 什麼是聲納數據庫結構?
- 30. 這是什麼數據結構?
兩種選擇:1)只是好奇心,或2)過早優化。 – flybywire 2009-05-27 10:55:57
有人問我這個問題,我告訴他們我的直覺是實現是基於數組的,但我不確定。這讓我的好奇心有所提高,所以我決定問。 – Nixuz 2009-05-27 11:30:32