python中哪些是无序_关于无序集合:无序集合 – 在python中设置
本問題已經有最佳答案,請猛點這里訪問。
很抱歉,如果這是一個基本問題,但是我想了解set類型在python中是如何工作的。
來自文檔:
A set object is an unordered collection of distinct hashable objects.
Being an unordered collection, sets do not record element position or order of insertion.
號
但是,如果它們沒有順序,為什么我在這個測試中總是得到相同的順序呢?我在等一些隨機的訂單。
users_ids = set([1, 1, 2, 3])
>>> print users_ids
set([1, 2, 3])
因為您使用的是整數,所以它們將按順序散列。
@這并不總是。它還取決于整數的大小
@SMAC89這是一個公平的觀點。
隨機順序不是無序的。無序意味著沒有定義的數據排序方式,即插入順序或數據與數據排列方式沒有任何關聯。
數據總是以可預測的順序排列的原因,因為發生這種情況時,特定的實現選擇始終以插入順序指示數據順序的方式排列元素。但是,不能保證會發生這種情況,我們確實在python 3.x字典實現中看到了這種偏差。
注意,即使我們看到數據已排序,
>>> {1,2,3,4,5}
set([1, 2, 3, 4, 5])
我們仍然稱之為無序,除非文件嚴格規定并保證其訂單,否則可能會有驚喜等待您。我見過依賴于集合和字典在插入模式中保持有序的事實的實現。當這些實現被移植到python 3.x時,會產生嚴重的后果。
γ
What’s New In Python 3.3
Security improvements:
Hash randomization is switched on by default.
號
您將共享一個描述Python3.x字典實現的鏈接,以及它與Python2.x的區別嗎?
讓我看看我是否理解。在python 2.7中,集合是無序的,但特定的實現保持插入順序?!在這種情況下,它們可能是訂購的,但在未來的版本中不能保證。我的理解正確嗎?
@但是,3.3以后的差異是由于散列的隨機性-請參閱stackoverflow.com/a/14959001/3001761
@用戶2990084:說它保持插入順序是錯誤的,但我的意思是,每次以特定的順序插入相同的數據時,字典都會以定義的方式維護。
@用戶2990084:我已經用鏈接更新了答案。
@用戶2990084看到保留順序的原因是您使用的是順序整數。python 2.x散列的方式,您的示例恰好是"有序的"。
總結
以上是生活随笔為你收集整理的python中哪些是无序_关于无序集合:无序集合 – 在python中设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【考研英语语法】写作中的复杂名词短语
- 下一篇: ubuntu18.04 opencv 获