mn = min(A)
[i for i,e in enumerate(A) if e == mn]
它给出了:
^{pr2}$
哪些是1s在A-非[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
你也可以试试这个:
输出为:
^{pr2}$因为当你使用
它等于A.index(1),并且1的索引永远是2。您可以尝试以下脚本:
^{pr2}$您可以将
list-comprehension
与enumerate()
一起使用。多亏了@MikeScotty
,性能的改进将是首先计算最小值。在代码如下:
它给出了:
^{pr2}$哪些是
1s
在A
-非[2, 8]
中的索引为了证明这是更快的,下面是
minx
wrapper
:以及一些使用
timeit
的计时:相关问题 更多 >
编程相关推荐