考虑下面的代码(Python)
k=[45,51,66,11,99,44]
z=k
z.reverse()
这里代替Z而变量K也是Reveresed
所以我需要的是只需要反转子变量z而不修改K变量(列表)
答案 0 :(得分:1)
>>> k=[45,51,66,11,99,44]
>>> z = k[:]
>>> k.reverse()
>>> k
[44, 99, 11, 66, 51, 45]
>>> z
[45, 51, 66, 11, 99, 44]
这是一个众所周知的python行为,它与其对引用的处理有关。
通过执行z=k
,你没有说"复制k
并将其分配给z
",而不是你'重新使z
和k
指向相同的对象或相同的内存位置。这具有隐含的后果,即z
的任何更改也会影响k
,反之亦然。在其他编程语言中,此行为称为别名。
使用z=k[:]
我使用列表切片显式创建z
的新副本,然后将该新副本分配给k
。这样,它们彼此独立,并且不会对两者都进行更改。