【发布时间】:2019-11-19 23:34:33
【问题描述】:
我对下面 python 代码的行为感到困惑。 我想对列表中的最后 3 个数字进行排序。但是当我链接操作时,它不起作用。我错过了什么?
行为 1:
>>> a = [10,4,2,3]
>>> b = a[1:].sort() # I want to sort last 3 numbers. But when I chain the
# operations, it doesn't work. Why?
>>> b
<empty value>
====
行为 2:
>>> a = [10,4,2,3]
>>> b = a[1:]
>>> b.sort()
>>> b
[2, 3, 4]
【问题讨论】:
-
它是合法的,但它没用。
.sort()就地 工作并返回None,所以它在分配中没有用。b = ...inb = a[1:].sort()是一个分配,所以你得到None回来。查看sorted() -
相反,您可以使用
b = sorted(a[1:])。见:stackoverflow.com/a/22442440/11981207 -
我同意。但是,如果我执行 a[1:].sort() 那么这不会对“a”进行排序,这就是整个调查的开始方式。