Python – 获取列表中所有出现的元素的索引
给定一个列表,任务是编写一个Python程序来获取列表中所有出现的元素的索引。
方法一:使用 For 循环
这是获取列表中所有出现的元素的索引的简单方法。在这里,我们使用 for 循环遍历原始列表中的每个元素。
Syntax : for iterator_name in range(length)
where
- iterator_name is the name of the iterator
- length is the size of the list
例子 :
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 循环。此函数将计数器添加到可迭代对象并返回枚举对象。
Syntax: [expression for element_name in enumerate(list_name) if condition]
where
- Element_name is the name of the element
- list_name is the name of the list
- Condition is the condition that needs to be true
为此,我们将创建列表,然后我们将创建枚举函数来获取列表中所有出现的元素的索引
例子 :
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() 方法,该方法将从起始值返回均匀间隔值的迭代器。
Syntax: [expression for element_name in zip(count(), list_name) if condition]
- element_name is the name of the element
- list_name is the name of the list
- Condition is the condition that needs to be true
为此,我们将创建一个列表,然后使用 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中使用数组的便捷方式。
Syntax: numpy.where(list_name,value)[index]
where
- list_name is the name of the list
- Value is the value to be searched for
- Index is the starting index of array (usually it will be “0”)
为此,我们将使用 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]