【问题标题】:How to return the index of the list item如何返回列表项的索引
【发布时间】:2018-07-02 13:02:18
【问题描述】:

我在Python中有以下列表:

x = [[1,2],[3,4],[5,'inf'],[6,7],['nan',10]]

如何返回包含'inf''nan' 的项目的索引?

EDIT-1

我想到的第一件事就是做一个if语句,如下:

if (float('inf') in i) or (float('nan') in i)

但是,不知道如何返回索引值。

EDIT-2

被标记为重复的问题实际上并没有回答我的问题。

谢谢。

【问题讨论】:

  • 你有什么尝试吗?
  • @WillemVanOnsem 是的,我已将其添加为对我的问题的编辑。我刚刚创建了一个 if 语句,但不知道如何返回索引值
  • @Simplicity:不是纯粹的重复,因为那是针对单个索引的。
  • infnan 真的是问题所指示的字符串或您尝试中的数值吗?

标签: python list indexing


【解决方案1】:

您可以遍历列表并检查naninf

x = [[1,2],[3,4],[5,'inf'],[6,7],['nan',10]]

for y in x:
    if 'inf' in y:
        print(x.index(y),y.index('inf'))
    elif 'nan' in y:
        print(x.index(y), y.index('nan'))

结果将是:

2 1
4 0

【讨论】:

    【解决方案2】:

    很高兴您添加了尝试!我们 SO 用户喜欢人们在提出问题之前展示他们的作品。这表明您真正关心您要解决的问题,而不仅仅是为了免费工作服务。

    话虽如此,我喜欢这里列表理解的简单性:

    >>> [(i, j) for i, seq in enumerate(x) for j, item in enumerate(seq) if item == 'inf' or item == 'nan']
    [(2, 1), (4, 0)]
    

    利用集合及其性能成员检查的上述更简洁版本:

    >>> [(i, j) for i, seq in enumerate(x) for j, item in enumerate(seq) if item in {'inf', 'nan'}]
    

    我们在这里所做的是(1)以嵌套顺序遍历嵌套列表,(2)检查我们的项目是否符合您布置的条件, (3) 通过enumerate() 调用的结果捕获该位置的索引。

    推荐阅读:

    【讨论】:

      【解决方案3】:
      [(i, j) for i, outer in enumerate(x) for j, inner in enumerate(outer ) if inner in ['inf','nan']]
      

      【讨论】:

      • 感谢您提供此代码 sn-p,它可能会提供一些有限的短期帮助。一个适当的解释将通过展示为什么这是解决问题的好方法来极大地提高其长期价值,并使其对有其他类似问题的未来读者更有用。请编辑您的答案以添加一些解释,包括您所做的假设
      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多