Skip to main content
 首页 » 编程设计

python之在 Python 中查找列表中元素的索引

2025年05月04日14lovecherry

我有一个包含元素的列表,其中一些元素可以重复。例如,a = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]。我想找到所有这些元素的索引。输出应如下所示: 对于元素 1,索引为 [1, 5, 9]。对于元素 2,索引为 [2, 6, 10] 等...

有人可以告诉我该怎么做吗?请注意,代码应尽可能通用。

请您参考如下方法:

这是一个非常通用的方法:

>>> lst = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] 
>>> dct = {x:[] for x in lst} 
>>> for x,y in enumerate(lst, 1): 
...     dct[y].append(x) 
... 
>>> dct 
{1: [1, 5, 9], 2: [2, 6, 10], 3: [3, 7, 11], 4: [4, 8, 12]} 
>>> 

但是请注意,Python 索引从 0 开始,因此 1 的列表应该是[0, 4, 8],2 的列表[1 , 5, 9] 等。但是,由于您希望索引为 +1,因此我将 enumerate 设置为从 1 开始。


上述解决方案使用纯 Python,没有任何导入。但是,如果您导入 collections.defaultdict,则可以提高性能:

>>> from collections import defaultdict 
>>> dct = defaultdict(list) 
>>> for x,y in enumerate(lst, 1): 
...     dct[y].append(x) 
... 
>>> dct 
{1: [1, 5, 9], 2: [2, 6, 10], 3: [3, 7, 11], 4: [4, 8, 12]} 
>>>