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