2024-05-23 17:44:34 发布
网友
抱歉,我有一个非常基本的python问题。在下面的程序中,我试图复制一个列表,然后按升序排序。我写的代码是:
def lesser_than(thelist): duplicate = thelist[:] duplicate = duplicate.sort() return duplicate
它给我的错误是,它不能排序的类型无。有人知道为什么会这样吗
所发生的是sort()将列表排序到适当的位置,这样就不会返回新的列表
sort()
你能做什么
您可以使用sorted(),它返回一个排序的列表:
sorted()
duplicate = sorted(duplicate)
或者,只需执行操作(duplicate.sort())并返回排序列表:
duplicate.sort()
duplicate = thelist[:] duplicate.sort() return duplicate
list.sort对列表进行排序并返回None。这是一个常见的python约定,如果操作已经就绪,python通常返回None。所以,你的代码应该是:
list.sort
None
duplicate = thelist[:] duplicate.sort() # Note, no assignment return duplicate
或者,您可以使用sorted:
sorted
return sorted(thelist)
既然sorted已经返回了一个排序过的副本,那么您应该都很好(附带的好处是支持任意的iterables,而不是简单的列表…)
注意这里有一个轻微的命名约定。像sort、reverse这样的动词通常在有意义的时候就在适当的位置操作,像sorted或reversed这样的动词会复制。我并不是说这个惯例无处不在,但它确实存在,至少在内置系统中是如此…
sort
reverse
reversed
所发生的是
sort()
将列表排序到适当的位置,这样就不会返回新的列表你能做什么
您可以使用
sorted()
,它返回一个排序的列表:或者,只需执行操作(
duplicate.sort()
)并返回排序列表:list.sort
对列表进行排序并返回None
。这是一个常见的python约定,如果操作已经就绪,python通常返回None
。所以,你的代码应该是:或者,您可以使用
sorted
:既然
sorted
已经返回了一个排序过的副本,那么您应该都很好(附带的好处是支持任意的iterables,而不是简单的列表…)注意这里有一个轻微的命名约定。像
sort
、reverse
这样的动词通常在有意义的时候就在适当的位置操作,像sorted
或reversed
这样的动词会复制。我并不是说这个惯例无处不在,但它确实存在,至少在内置系统中是如此…相关问题 更多 >
编程相关推荐