有时需要获取列表中某一元素的所有索引,而获取列表元素索引的函数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差不多,都是穷举的思想,看起来也不太简洁。
以上两种方式都是针对想要查询的元素已知的情况,如果要查询的元素未知,
比如找出列表中的众数的所有索引,则需要先确定众数,然后再使用上述方法。