python - 查找列表中类实例的位置

标签 python list class

给定一个类,比如说

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)] 返回 13 )?

最佳答案

您可以为您的类定义 __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/

相关文章:

python - 灵药反射

python - 在 Tkinter 中将滚动条拉伸(stretch)到 Canvas 大小

python - 如何让 get_dummies 工作到位?

list - Scala:按顺序从列表元素创建元组列表

c# - 查找两个列表中的差异

java - 如何在 Java 泛型中返回类对象 "type"?

C# - 实例化其他类的类?

python - 遍历 Redis 键

c - C 中的链表和二进制数据

delphi - 在delphi中分离接口(interface)和实现类?