如何查找相同项目的列表索引[重复]

Posted

技术标签:

【中文标题】如何查找相同项目的列表索引[重复]【英文标题】:How to find list indexes for identical items [duplicate] 【发布时间】:2017-12-03 23:16:01 【问题描述】:

我有这份清单

list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']

但是,当我调用 list.index("e") 时,它只返回第一个索引。有没有办法同时返回两个索引?

【问题讨论】:

【参考方案1】:

你可以这样做:

>>> list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
>>> [index for index, value in enumerate(list_) if value == 'e']

相当于:

list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']

result = []
for index, value in enumerate(list_):
    if value == 'e:'
        result.append(index)

前一个示例(列表推导式)比显式 for 循环更紧凑、更快速。这是因为在列表上调用 .append() 会导致列表对象增长(以块的形式)以单独为新元素腾出空间,而列表推导首先收集所有元素,然后再创建列表以一次性适应元素。

作为一个函数,更一般地说,您想要索引的元素可能会改变:

def get_all_indexes(list_, element):
    return [index for index, value in enumerate(list_) if value == element]

print(get_all_indexes(['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'], 'e'))

【讨论】:

【参考方案2】:

我会做这样的事情,使用列表理解,请注意不要使用 list 作为变量名:

>>> myList = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']    
>>> [i for i, v in enumerate(myList) if v == "e"]
[5, 8]

【讨论】:

【参考方案3】:

或者你可以使用 numpy

import numpy as np
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
np.where(np.array(list)=="e")

如果你想让它在列表中,你可以使用

np.where(np.array(list)=="e")[0].tolist()

我强烈建议您不要调用您的变量关键字,如列表、字典?就叫它 my_list 或其他名字吧

【讨论】:

以上是关于如何查找相同项目的列表索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章

F# list 查找项目索引

Python 列表查找,如何在列表中查找项目或者元素索引翻译

如何在列表中查找项目的索引,在 Python 中使用正则表达式搜索项目?

快速的独特组合(来自有重复的列表),无需查找

在c#中使用lambda或linq查找项目索引[关闭]

列表 - 如何查找项目出现的次数[重复]