如何查找相同项目的列表索引[重复]
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 或其他名字吧
【讨论】:
以上是关于如何查找相同项目的列表索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python 列表查找,如何在列表中查找项目或者元素索引翻译