给出一个列表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

否则你的代码是好的,没有什么需要改进的.

Python相关问答推荐

如何自动抓取以下CSV

如何计算两极打印机中 * 所有列 * 的出现次数?

Gekko:Spring-Mass系统的参数识别

从dict的列中分钟

在线条上绘制表面

对所有子图应用相同的轴格式

如何获取numpy数组的特定索引值?

梯度下降:简化要素集的运行时间比原始要素集长

形状弃用警告与组合多边形和多边形如何解决

创建可序列化数据模型的最佳方法

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

递归函数修饰器

如何反转一个框架中列的值?

如何将返回引用的函数与pybind11绑定?

Python如何导入类的实例

如何写一个polars birame到DuckDB

根据过滤后的牛郎星图表中的数据计算新系列

极点用特定值替换前n行

更新包含整数范围的列表中的第一个元素

Pandas 数据框自定义排序功能