【问题标题】:Can you use list.index for a list of objects?您可以将 list.index 用于对象列表吗?
【发布时间】:2021-04-20 14:58:46
【问题描述】:

如果我有一个由类组成的对象列表,有没有办法获取该列表中特定对象的索引?

我试过这样使用 list.index:

    obj_list = [object1(), object2()]
    object1_index = obj_list.index(object1())
    return object1_index

但这只是返回一个 ValueError,表示 object1() 不在列表中,即使它在列表中。

【问题讨论】:

  • object1 是类名吗?如果是这样,object1()(带括号)会实例化一个新对象,这不是您可能在这里尝试做的。
  • 除非您的类实现 __eq__,否则您可以预期 obj_list.index 无法找到匿名对象。
  • 顺便说一句,object1() 已经不正确,因为您从一个类中创建了一个对象。它应该是Class1()object1 = Class1() 其中() 表示创建该类的对象
  • 嗨,欢迎来到 Stack Overflow。由于您在 Python 中提供示例,因此非常适合最常用的编码风格,以帮助我们阅读您的代码。在目前的状态下,我们必须做更多的努力才能阅读它。例如,类的命名约定是 CapWords。另外,尽量避免使用名为“object”的类,这可能会使读者感到困惑。 python.org/dev/peps/pep-0008

标签: python list object indexing


【解决方案1】:

object1 是构造函数;每次你说object1() 时,你都在构造一个object1 类的新对象。因此,index() 调用中的object1()obj_list 中的对象不同。

你可以这样做:

next(i for i, x in enumerate(obj_list) if isinstance(x, object1))

查找obj_list 中第一个对象的索引,该对象是object1 的一个实例。

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2013-01-12
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多