如何返回列表项的索引

时间:2018-01-23 16:17:34

标签: python list indexing

我在x = [[1,2],[3,4],[5,'inf'],[6,7],['nan',10]] 中有以下列表:

'inf'

如何返回包含'nan'if (float('inf') in i) or (float('nan') in i) 的商品的索引?

修改-1

我想到的第一件事就是制作一个if语句,如下所示:

$filtered = $toFilter |? { $item = $_; ($filters |? { $item -match $_ }).Count -gt 0  }

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

修改-2

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

感谢。

3 个答案:

答案 0 :(得分:2)

您可以遍历列表并检查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

答案 1 :(得分: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()电话的结果捕获该位置的索引。

推荐读物:

答案 2 :(得分:0)

[(i, j) for i, outer in enumerate(x) for j, inner in enumerate(outer ) if inner in ['inf','nan']]