有时需要获取列表中某一元素的所有索引,而获取列表元素索引的函数index只能返回第一个满足条件的元素的索引。

此时我们可以通过两种方式获取其所有索引:

1.将list转为array

对于array对象,可以使用如下方式获取某个元素的所有索引

nums_list = [1,2,3,1]
nums = np.array(nums_list)
indexs = np.where(nums==num)

其中nums_list为原始列表,nums为array数组,num为指定元素。

返回的对象为包含一个array对象的tuple类型,如果我们想要list类型的结果,

可直接使用如下方式将其转为list即可

nums_list = [1,2,3,1]
nums = np.array(nums_list)
indexs = np.where(nums==num)[0].tolist()

2.使用enumerate函数

这种方式就是一个个列举,然后把满足条件的元素索引记录下来,代码如下:

indexs = [index for index,value in enumerate(nums_list) if value == num]

当然也有其他方法,但是原理跟enumerate差不多,都是穷举的思想,看起来也不太简洁。

以上两种方式都是针对想要查询的元素已知的情况,如果要查询的元素未知,

比如找出列表中的众数的所有索引,则需要先确定众数,然后再使用上述方法。