从列表中删除元素

2024-10-06 13:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有人知道为什么吗?你知道吗


Tags: 元素列表indexremovelistprintx1x2
2条回答

哦,变量分配和声明一步到位。。。 因此,这将正常工作:

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

天气真好!你知道吗

因为这句话x2 = x1。您只是给x2分配了与x1相同的引用。你需要明确地复制。像这样:

x2 = x1[:]

如果你觉得这句话很奇怪,你也可以这样说:

x2 = list(x1)

相关问题 更多 >