集合列表上的Python .sort()返回None

时间:2017-07-12 02:56:29

标签: python sorting set union

Python 3.6

刚出现这个问题(下面),添加.sort()导致我的表达式返回None。

这应该有用吗?如果不是为什么不呢?

>>> x = [1,2,3,3,45,5,6,6,7,7]
>>> y = [3,4,34,643,6,234,3,34,5,22,3]
>>> w =[x,y]
>>> x = [set(i) for i in w]
>>> x
[{1, 2, 3, 5, 6, 7, 45}, {34, 3, 4, 643, 6, 5, 234, 22}]
>>> common_elements = list(set.union(*x))
>>> common_elements
[1, 2, 3, 34, 5, 6, 7, 4, 643, 234, 45, 22]
>>> common_elements = list(set.union(*x)).sort() #Adding .sort() returns None
>>> common_elements
>>>                #Nothing, None

4 个答案:

答案 0 :(得分:1)

你必须对集合使用排序方法:

common_elements = list(sorted(set.union(*x)))

排序方法就位,它不会返回任何东西,另一个选择是

common_elements = list(set.union(*x))
common_elements.sort()

答案 1 :(得分:1)

是的,list.sort方法对列表进行了排序并返回None。如果要使用sorted方法返回已排序的列表。

>>> lst=[5, 2, 1, 4, 3]
>>> lst.sort()
>>> lst
[1, 2, 3, 4, 5]
>>> lst=[5, 2, 1, 4, 3]
>>> lst=sorted(lst)
>>> lst
[1, 2, 3, 4, 5]
>>> 

所以你必须使用:common_elements = sorted(list(set.union(*x)))或者你可以这样排序:

common_elements = list(set.union(*x))
common_elements.sort()

答案 2 :(得分:0)

sort就位。它执行排序并且不返回值。

l = list((4,3,2,1))
l
# OUTPUT
# [4, 3, 2, 1]
l.sort()
l
# OUTPUT
# [1, 2, 3, 4]

答案 3 :(得分:0)

调用.sort()时,不要重新分配common_elements。 .sort()就地修改列表并返回None。