You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何编写生成器/迭代器表达式获取列表最大元素的升序索引序列

实现逻辑说明
  • 第一步:先获取整数列表X的最大元素值,可直接调用内置函数max(X)计算,示例中X的最大值为10。
  • 第二步:调用enumerate(X)遍历列表,该函数会按列表从左到右的顺序,依次返回(当前索引, 当前元素值)的元组,遍历过程中拿到的索引天然符合升序要求,不需要额外排序。
  • 第三步:筛选出所有元素值等于最大值的元组,仅保留对应索引,即可得到符合要求的序列。

你之前的错误实现没有做最大值筛选,反而对枚举结果做了倒序排序,既没有过滤无效元素,也打乱了索引的升序顺序,所以无法得到正确结果。

正确实现代码

直接用生成器表达式替换示例中的YOUR_EXPRESSION即可,完整可运行代码如下:

from typing import Iterator
X = [1,10,3,4,10,5]
S : Iterator[int] = (idx for idx, val in enumerate(X) if val == max(X))
assert list(S)==[1,4]

如果X的规模很大,为了避免每次判断都重复计算最大值,可以提前把最大值存到变量里优化性能:

from typing import Iterator
X = [1,10,3,4,10,5]
max_val = max(X)
S : Iterator[int] = (idx for idx, val in enumerate(X) if val == max_val)
assert list(S)==[1,4]

内容的提问来源于stack exchange,提问作者Emilia Delizia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:03