从python上的列表获取索引

2024-06-28 15:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从列表中最小的元素中获取所有索引:

A = [5,2,1,5,6,1,7,9,2]


minimo = min(A)
#print minimo
indexArray = []
for elem in A:
    #print elem
    if elem == minimo:
        indexArray.append(A.index(elem))
print indexArray

需要此输出:[2,5] 但上面印着:[2,2]


Tags: in元素列表forindexifminprint
3条回答

你也可以试试这个:

A = [5,2,1,5,6,1,7,9,2]
minimum = min(A)
res = list(filter(lambda m: A[m]==minimum, range(len(A))))
print(res)

输出为:

^{pr2}$

因为当你使用

A.index(elem)

它等于A.index(1),并且1的索引永远是2。您可以尝试以下脚本:

^{pr2}$

您可以将list-comprehensionenumerate()一起使用。多亏了@MikeScotty,性能的改进将是首先计算最小值。在

代码如下:

mn = min(A)
[i for i,e in enumerate(A) if e == mn]

它给出了:

^{pr2}$

哪些是1sA-非[2, 8]中的索引


为了证明这是更快的,下面是minxwrapper

>>> def minx(l):
...     print("called")
...     return min(l)
... 
>>> [i for i,e in enumerate(A) if e == minx(A)]
called
called
called
called
called
called
called
called
called
[2, 5]

以及一些使用timeit的计时:

>>> timeit.timeit("[i for i,e in enumerate(A) if e == min(A)]", globals=locals())
5.9568054789997404
>>> timeit.timeit("[i for i,e in enumerate(A) if e == 1]", globals=locals())
1.397674421001284

相关问题 更多 >