在Python变量中需要帮助

时间:2017-11-04 10:21:24

标签: python

考虑下面的代码(Python)

  k=[45,51,66,11,99,44]
  z=k
  z.reverse()

这里代替Z而变量K也是Reveresed

所以我需要的是只需要反转子变量z而不修改K变量(列表)

1 个答案:

答案 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",而不是你'重新使zk指向相同的对象或相同的内存位置。这具有隐含的后果,即z的任何更改也会影响k,反之亦然。在其他编程语言中,此行为称为别名

使用z=k[:]我使用列表切片显式创建z新副本,然后将该新副本分配给k 。这样,它们彼此独立,并且不会对两者都进行更改。