Python不会理解Lis

2024-05-23 17:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,我有一个非常基本的python问题。在下面的程序中,我试图复制一个列表,然后按升序排序。我写的代码是:

def lesser_than(thelist):

    duplicate = thelist[:]
    duplicate = duplicate.sort()
    return duplicate

它给我的错误是,它不能排序的类型无。有人知道为什么会这样吗


Tags: 代码程序类型列表return排序def错误
2条回答

所发生的是sort()列表排序到适当的位置,这样就不会返回新的列表

你能做什么

  • 您可以使用sorted(),它返回一个排序的列表:

    duplicate = sorted(duplicate)
    
  • 或者,只需执行操作(duplicate.sort())并返回排序列表:

    duplicate = thelist[:]
    duplicate.sort()
    return duplicate
    

list.sort对列表进行排序并返回None。这是一个常见的python约定,如果操作已经就绪,python通常返回None。所以,你的代码应该是:

duplicate = thelist[:]
duplicate.sort()  # Note, no assignment
return duplicate

或者,您可以使用sorted

return sorted(thelist)

既然sorted已经返回了一个排序过的副本,那么您应该都很好(附带的好处是支持任意的iterables,而不是简单的列表…)

注意这里有一个轻微的命名约定。像sortreverse这样的动词通常在有意义的时候就在适当的位置操作,像sortedreversed这样的动词会复制。我并不是说这个惯例无处不在,但它确实存在,至少在内置系统中是如此…

相关问题 更多 >