sort()和reverse()方法在排序或反转大型列表时修改列表以便经济空间。为了提醒您它们是由副作用操作的,它们不会返回已排序或反转的列表。
上述文字可在http://docs.python.org/2/library/stdtypes.html#mutable-sequence-types
找到“修改空间经济名单”是什么意思?
示例:
x = ["happy", "sad"]
y = x.reverse()
会将None
返回y
。那么为什么呢,
x.reverse()
成功撤消x
?
答案 0 :(得分:2)
“修改空间经济名单”是什么意思?
这意味着它不会创建列表的副本。
为什么,x.reverse()成功反转x?
我不明白这个问题。这样做是因为这是它的目的(反向x
并返回None
)。
请注意,sort()
和reverse()
的副本不会修改原件并返回副本。这些函数称为sorted()
和reversed()
:
In [7]: x = [1, 2, 3]
In [8]: y = list(reversed(x))
In [9]: x
Out[9]: [1, 2, 3]
In [10]: y
Out[10]: [3, 2, 1]
答案 1 :(得分:1)
list.reverse
就地反转列表并返回None
,这样做的目的就是append
,remove
,extend
,{{ 1}}等等。
insert
答案 2 :(得分:1)
在几乎所有编程语言中都有两种可调用定义:函数和过程。
函数是执行某些处理并返回值的方法或子例程。例如,对两个整数a
和b
求和的函数将返回总和a + b
的结果。
另一方面,程序几乎相同(即使在大多数语言的语法中),但是没有返回值的细微差别,当然它们的副作用> em>,意思是他们改变了某些东西的状态,或只是处理一些数据并将其保存或只是将其打印到文件中。
所以在这种情况下,reverse
将作为一个过程,它改变被反转的列表的状态(通过反转它),这里是如何在没有额外空间的情况下完成的:
def reverse(l):
for i in range(len(l) / 2):
l[i], l[-i-1] = l[-i-1], l[i]
请注意,永远不会创建新列表,而是代码所做的是通过交换第一个和第二个,第二个来交换列表l
的元素和倒数第二个,直到列表中一半的元素。
希望这有助于您理解;)