📌  相关文章
📜  Python – 获取列表中所有出现的元素的索引

📅  最后修改于: 2022-05-13 01:55:22.876000             🧑  作者: Mango

Python – 获取列表中所有出现的元素的索引

给定一个列表,任务是编写一个Python程序来获取列表中所有出现的元素的索引。

方法一:使用 For 循环

这是获取列表中所有出现的元素的索引的简单方法。在这里,我们使用 for 循环遍历原始列表中的每个元素。

例子 :

Python3
# initialize a list
my_list = [1, 2, 3, 1, 5, 4]
  
# find length of the list
list_size = len(my_list)  
  
# declare for loop
for itr in range(list_size):  
    
      # check the condition
    if(my_list[itr] == 1):  
        
          # print the indices
        print(itr)


Python3
# initialize a list
my_list = [1, 2, 3, 1, 5, 4]  
indices = [ind for ind, ele in enumerate(my_list) if ele == 1]
  
# print the indices
print(indices)


Python3
# import count method from itertools
from itertools import count  
  
# initialize a list
my_list = [1, 2, 3, 1, 5, 4] 
indices = [ind for ind, 
           ele in zip(count(),
                      my_list) if ele == 1]
  
# print the indices
print(indices)


Python3
# import numpy module
import numpy  
  
# initialize a array
my_list = numpy.array([1, 2, 3, 1, 5, 4])  
indices = numpy.where(my_list == 1)[0]
  
# display result
print(indices)


输出:

0
3

方法二:使用 enumerate()函数

我们可以使用 enumerate 函数来代替使用 for 循环。此函数将计数器添加到可迭代对象并返回枚举对象。

为此,我们将创建列表,然后我们将创建枚举函数来获取列表中所有出现的元素的索引

例子 :

Python3

# initialize a list
my_list = [1, 2, 3, 1, 5, 4]  
indices = [ind for ind, ele in enumerate(my_list) if ele == 1]
  
# print the indices
print(indices)  

输出:

[0, 3]

方法三:使用 itertools 模块

Itertools 是一种节省内存的工具,可以单独使用或组合使用,因此我们将使用此模块中的 count() 方法,该方法将从起始值返回均匀间隔值的迭代器。

为此,我们将创建一个列表,然后使用 zip() 理解,我们将获得列表中所有出现的元素的索引。

例子:

Python3

# import count method from itertools
from itertools import count  
  
# initialize a list
my_list = [1, 2, 3, 1, 5, 4] 
indices = [ind for ind, 
           ele in zip(count(),
                      my_list) if ele == 1]
  
# print the indices
print(indices)  

输出:

[0, 3]

方法 4:使用 NumPy 库

NumPy 是通用的数组处理包,它提供了在Python中使用数组的便捷方式。

为此,我们将使用 numpy.array() 创建一个数组,然后在满足条件时使用 numpy.where() 方法获取输入数组中元素的所有索引。

例子 :

Python3

# import numpy module
import numpy  
  
# initialize a array
my_list = numpy.array([1, 2, 3, 1, 5, 4])  
indices = numpy.where(my_list == 1)[0]
  
# display result
print(indices)  

输出 :

[0, 3]