Python不会理解List

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的东西.有谁知道为什么会这样?

mgi*_*son 5

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通常在它们有意义的时候就地操作 - 动词喜欢sortedreversed复制.我不会说这个惯例无处不在,但它至少存在于内置...