[英]Why is the output of a set constructed from a list of random numbers always ordered?
[英]Why list(set(a+b)) returns ordered list? And is it always returns an ordered list?
我有兩個整數列表。 然后,我結合列表中的元素來創建沒有重復的新列表。 我希望對新列表進行排序。 但是當我嘗試結合使用set時,它將返回一個有序列表。 我想知道為什么返回有序列表? 而且它總是真實的嗎?
我嘗試過使用列表的不同值返回已排序的列表
a = [1,1,2,3,5,8,13,14,15,16]
b = [1,1,2,3,4,5,6,7,8,9,10,11,12]
c = list(set(a+b))
print(c)
結果是:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
由於集合是無序的,因此將集合投射到列表后獲得的列表是不可能排序的。
來自文檔: https : //docs.python.org/3/tutorial/datastructures.html#sets
集合是沒有重復元素的無序集合。
這是一個非常簡單的示例, order
失敗
a = [1,5]
b = [1,10,20]
c = list(set(a+b))
print(c)
#[1, 10, 20, 5]
In [2]: a = [1,5]
In [3]: b = [1,10,20]
In [5]: c = list(set(a+b))
In [6]: sorted(c)
Out[6]: [1, 5, 10, 20]
Python中的集合未排序:
Python還包括集合的數據類型。 集合是沒有重復元素的無序集合。 基本用途包括成員資格測試和消除重復條目。 集合對象還支持數學運算,例如並集,交集,差和對稱差。
這是示例:
a = list(reversed([1,1,2,3,5,4498576,8,13,14,15,16]))
b = [1,345,132,36465,7,8,9,10,11,12]
c = list(set(a+b))
print(c)
打印:
[1, 2, 3, 132, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 4498576, 36465, 345]
如果要對列表進行排序,則應手動進行:
c.sort()
print(c)
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 132, 345, 36465, 4498576]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.