在Python 2.7中,当我有两个列表并且仅从第二个列表中删除元素时,为什么元素也会从第一个列表中删除?
x1 = list()
x2 = list()
x1 = ['foo1', 'bar1', 'foo2', 'bar2']
x2 = x1
x2.remove('foo1')
del x2[x2.index('foo2')]
print 'x1:\t', x1
print 'x2:\t', x2
结果将是:
x1: ['bar1', 'bar2']
x2: ['bar1', 'bar2']
有人知道为什么吗?
答案 0 :(得分:3)
由于这句话x2 = x1
。您只需向x2
分配与x1
相同的引用。你需要明确复制。像这样:
x2 = x1[:]
如果您觉得这句话很奇怪,您也可以使用它:
x2 = list(x1)
答案 1 :(得分:0)
哦,一步变量赋值和声明...... 所以这将正常工作:
x1 = list()
x1 = ['foo1', 'bar1', 'foo2', 'bar2']
x2 = list(x1)
x2.remove('foo1')
del x2[x2.index('foo2')]
print 'x1:\t', x1
print 'x2:\t', x2
结果将是:
x1: ['foo1', 'bar1', 'foo2', 'bar2']
x2: ['bar1', 'bar2']
美好的一天!