给出一个列表a
,我想知道所有的索引i
,使得a[i]>a[j]
代表所有的j<i
.
我可以想出一个简单的for循环,但想知道是否有一些内置版本:
max_values = [a[0]]
indices = [0]
for i, x in enumerate(a):
if x>max_values[-1]:
indices.append(i)
max_values.append(x)
有没有更好的办法?
给出一个列表a
,我想知道所有的索引i
,使得a[i]>a[j]
代表所有的j<i
.
我可以想出一个简单的for循环,但想知道是否有一些内置版本:
max_values = [a[0]]
indices = [0]
for i, x in enumerate(a):
if x>max_values[-1]:
indices.append(i)
max_values.append(x)
有没有更好的办法?
这看起来不像是一个足够需要来保证内建的函数,我以前从未见过它.
您的问题没有说明您需要值,只需要索引,因此在这种情况下,您可以简化为
max_value = a[0]
indices = [0]
for i, x in enumerate(a):
if x>max_value:
indices.append(i)
max_value = x
否则你的代码是好的,没有什么需要改进的.