Python remove()修改了非预期的列表

时间:2015-03-14 16:22:00

标签: python

x=['0100', '1111', '1001', '1011']
y=x
y.remove('0100')
print(x)

上面的代码返回:['1111', '1001', '1011'] 我是一个初学者程序员,我想知道为什么remove()函数也修改了x列表而不是预期的y列表?代码在python 3.4.2中运行。如何解决此问题,以便仅修改y列表?

3 个答案:

答案 0 :(得分:1)

这是因为您将x参考复制到y。 您可以按y = list(x)创建副本。

例如:

x=['0100', '1111', '1001', '1011']
y = list(x)
y.remove('0100')
print(x)

答案 1 :(得分:0)

简单 - x和y不是lists,它们只是对列表的引用。内存中有一些包含列表数据的点,x和y都知道它在哪里。因此,当您执行y = x并更改y引用的列表时,此更改将反映在print(x)

答案 2 :(得分:0)

您必须了解变量与此变量包含的内容之间的区别。 有了这个:

x=['0100', '1111', '1001', '1011']
y=x

X和y完全相同,您必须复制x并进行分配,您可以这样做:y=x[:],此代码复制x的内容并将其分配给y