我对导致这种情况的思维过程感兴趣.对我来说,一个相对新手,似乎阻碍了,因为它阻止了列表处理的"链接"(例如mylist.reverse().append('a string')[:someLimit]).我想可能是"那些人的力量"决定列表理解是一个更好的范例(一个有效的观点),所以不想鼓励其他方法 - 但是这似乎有悖常理,以防止一种直观的方法,即使更好存在替代品.
请注意,我不是在抱怨(我敢肯定有是一个合理的理由,我在它是什么只是感兴趣!),也不是寻找一个解决方案(意见在这里非常具有启发性) -只是寻找一些情况下,并深入理解语言的设计过程.
要生成出现在set a中的值的排序列表,这可以:
a = [1,1,7,3,2,9,2]
b = list(set(a))
b.sort()
print b
Run Code Online (Sandbox Code Playgroud)
但是将两条线放在一起,它返回None:
a = [1,1,7,3,2,9,2]
b = list(set(a)).sort()
print b
Run Code Online (Sandbox Code Playgroud)
尽管这些都是真的:
type(list(set(a))) is list
len(list(set(a))) > 0
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么第二种方法只返回一个排序列表 - 为什么我必须将它们放在不同的行上(如第一种方法)?