当我从一个列表中删除一个元素时,它会从另一个列表中删除

时间:2012-03-30 02:26:02

标签: python list

如何在两个不同的列表中使用相同的元素,这样如果我从一个列表中删除它,它也会从另一个列表中删除?

a = [..., element, ...]
b = [..., element, ...]

a.remove(element)
element in b # False

3 个答案:

答案 0 :(得分:1)

简而言之,你不能。

更长一段时间,要做到这一点,你需要让两个列表相同,或者在list类周围编写一个可以处理删除的包装器,然后确保两个列表都是一个实例那个班。

答案 1 :(得分:1)

如果您使用element作为列表,那么当您对list元素执行某些操作时,您可能会影响a和b中的两个项目。

>>> element = [10]
>>> a = [1,element,2]
>>> b = [3,element,4]
>>> a
[1, [10], 2]
>>> b
[3, [10], 4]

>>> element.pop(0)
10
>>> a
[1, [], 2]
>>> b
[3, [], 4]
>>> filter(None,a)
[1, 2]
>>> filter(None,b)
[3, 4]

执行此操作时必须小心,因为您正在使用相同的实例。如果您指定其他内容,例如

element = 10

然后,您将按名称元素创建一个新对象,它不再是列表中引用的对象。我找到了Niklas的另一个答案。 B,非常有趣,你只需要将你的要求抽象成一个类。

答案 2 :(得分:0)

在pygame中,sprite类有一个kill方法。调用时,包含sprite的所有spriteGroup都将从中删除它。因此,如果您的元素不像int那么简单,您可以使用此模式。