我有两个带有整数的列表。然后,我结合列表中的元素来创建没有重复的新列表。我希望对新列表进行排序。但是当我尝试结合使用set时,它将返回一个有序列表。我想知道为什么返回有序列表?总是真的吗?
我尝试使用不同的list值返回了有序列表
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]
答案 0 :(得分:2)
由于集合是无序的,因此将集合投射到列表后获得的列表不可能被排序。
来自文档: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]
要对组合列表进行排序,只需使用sorted
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]
答案 1 :(得分:2)
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]