简单的尝试排序内联返回无,不知道为什么

时间:2015-02-20 00:33:38

标签: python python-2.7

要生成出现在set a中的值的排序列表,这样可以:

a = [1,1,7,3,2,9,2]
b = list(set(a))
b.sort()
print b

但将两行放在一起,它返回None:

a = [1,1,7,3,2,9,2]
b = list(set(a)).sort()
print b

即使这些都是真的:

 type(list(set(a))) is list
 len(list(set(a)))  > 0

我的问题是,为什么第二种方法只返回一个排序列表 - 为什么我必须将它们放在不同的行上(如第一种方法)?

3 个答案:

答案 0 :(得分:6)

sort()不会返回值,只会修改您传入的原始对象。

答案 1 :(得分:4)

sort()对列表进行排序,但不返回任何结果。你最后得到一个很好的排序列表。所以你应该这样做:

b = list(set(a))
b.sort()
print(b)

答案 2 :(得分:4)

sort是一种就地方法,意味着它不会返回值。它只是执行给定对象的方法,几乎​​就像来自其他语言的void方法。如果您想要一行,请尝试:

b = sorted(list(set(a)))