所以我有这个列表(Sheep 是我创建的一个类,需要一个参数):
list = [Sheep(2), Sheep(3), Sheep(3), Sheep(4), Sheep(4), Sheep(4), Sheep(5), Sheep(5), Sheep(5), Sheep(5), Sheep(6), Sheep(6), Sheep(6), Sheep(7), Sheep(7), Sheep(8)]
但是,当我尝试从列表中删除
Sheep(2)
( list.remove(Sheep(2)
) 时,它返回 ValueError: list.remove(x): x not in list
我该如何解决?
最佳答案
要使用自定义类测试 Python 列表中的成员资格,您必须提供一个相等 ( __eq__
) 方法
class Sheep:
def __init__(self, x):
self.x = x
def __eq__(self, other):
assert isinstance(other, Sheep)
return self.x == other.x
现在您可以使用相同的“x”创建类的实例,它们将成为您的列表的成员
foo = [Sheep(2), Sheep(3), Sheep(3), Sheep(4), Sheep(4), Sheep(4), Sheep(5), Sheep(5), Sheep(5), Sheep(5), Sheep(6), Sheep(6), Sheep(6), Sheep(7), Sheep(7), Sheep(8)]
print(Sheep(2) in foo) # True
你也应该能够删除它们
foo.remove(Sheep(2))
print(foo) # [Sheep(3), Sheep(3), Sheep(4), Sheep(4), Sheep(4), Sheep(5), Sheep(5), Sheep(5), Sheep(5), Sheep(6), Sheep(6), Sheep(6), Sheep(7), Sheep(7), Sheep(8)]
关于python - 我无法从列表中删除类对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59597584/