猿问

如何查找列表中元素的所有出现情况?

如何查找列表中元素的所有出现情况?

index()只会给出列表中某一项的第一次出现。是否有一个简单的技巧可以返回列表中的所有索引?



达令说
浏览 704回答 3
3回答

MYYA

您可以使用列表理解:indices = [i for i, x in enumerate(my_list) if x == "whatever"]

潇湘沐

虽然不是直接针对列表的解决方案,numpy为这类事情而闪耀:import numpy as np values = np.array([1,2,3,1,2,4,5,6,3,2,1])searchval = 3ii = np.where(values == searchval)[0]返回:ii ==>array([2, 8])对于具有大量元素和其他解决方案的列表(数组)来说,这可以大大加快速度。

潇潇雨雨

解决方案list.index:def indices(lst, element):     result = []     offset = -1     while True:         try:             offset = lst.index(element, offset+1)         except ValueError:             return result         result.append(offset)它比列表理解要快得多enumerate,用于大名单。它也比numpy解如果您已经拥有了数组,否则转换成本超过了速度增益(在包含100个、1000个和10000个元素的整数列表上进行了测试)。注:请注意,基于Chris_Rands的注释:如果结果足够稀疏,此解决方案比列表理解速度更快,但是如果列表中有许多正在搜索的元素的实例(超过列表的15%,在包含1000个整数的测试中),则列表理解速度更快。
随时随地看视频慕课网APP

相关分类

Python
我要回答