>>> x=[1,2,3,4]
>>> y=x
>>> y is x
True # it means both y and x are just references to a same object [1,2,3,4], so changing either of y or x will affect [1,2,3,4]
>>> y=x[:] # this makes a copy of x and assigns that copy to y,
>>> y is x # y & x now point to different object, so changing one will not affect the other.
False
y = x
不复制任何内容。它将名称y
绑定到x
引用的同一对象。在Python中,对裸名称的赋值永远不会复制任何内容。在如果你想复制一个对象,你需要显式地复制它,使用你试图复制的对象可用的任何方法。您没有说明
x
是什么类型的对象,因此无法说明如何复制它,但是copy
模块提供了一些适用于多种类型的函数。另请参见this answer。在使用}和{}现在都指向同一个对象。在
y = x[:]
代替y = x
。y = x
表示{看看这个例子:
如果x是list is list of list,那么
^{pr2}$[:]
就没有用了:在这种情况下,您应该使用
copy
模块的deepcopy()
函数,它生成对象的非浅层副本。在相关问题 更多 >
编程相关推荐