从列表异常中删除或删除元素

时间:2014-11-07 09:30:32

标签: python list

在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']

有人知道为什么吗?

2 个答案:

答案 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']

美好的一天!