给定一个类,比如说
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
我想找到此类实例在列表中的位置。例如,给定
list = [1, 2, 3, Complex(1, 1)]
如何找到Complex(1, 1)
的位置?
我试过list.index(Complex(1, 1))
,而是第二次调用 Complex
创建的对象与第一个不同,因此结果是 ValueError
引发异常。
我怎样才能做到这一点?
更一般地说,我如何在 Complex
的任何实例的列表中找到位置(例如 list = [1, Complex(1, 1), 2, Complex(2, 2)]
返回 1
和 3
)?
最佳答案
您可以为您的类定义 __eq__
方法,该方法将用于任何相等运算符。这将使 list.index
按您的预期工作。
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
def __eq__(self, other):
if isinstance(other, Complex):
return self.r == other.r and self.i == other.i
else:
return False
示例
>>> l = [1, 2, 3, Complex(1, 1)]
>>> l.index(Complex(1, 1))
3
关于python - 查找列表中类实例的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305487/