use*_*935 0 python sorting list duplicates
对不起,我有一个非常基本的python问题.在下面的程序中,我试图复制一个列表,然后按升序对其进行排序.我写的代码是:
def lesser_than(thelist):
duplicate = thelist[:]
duplicate = duplicate.sort()
return duplicate
Run Code Online (Sandbox Code Playgroud)
它给我的错误是它无法排序类型为None的东西.有谁知道为什么会这样?
list.sort对列表进行排序并返回None.这是一个常见的python约定 - 如果操作就位,python 通常会返回None.所以,你的代码应该是:
duplicate = thelist[:]
duplicate.sort() # Note, no assignment
return duplicate
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用sorted:
return sorted(thelist)
Run Code Online (Sandbox Code Playgroud)
既然sorted已经返回了一个已排序的副本,那么你应该都是好的(支持任意迭代而不是简单列表的附带好处......)
请注意,这里有一个轻微的命名约定.类似的动词sort,reverse通常在它们有意义的时候就地操作 - 动词喜欢sorted或reversed复制.我不会说这个惯例无处不在,但它至少存在于内置...