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

如何获取包含重复元素的列表中每个元素的正确索引

如何获取列表中重复元素的实际索引?

嘿,这个问题我太熟悉了!你当前代码里的values.index(item)是「罪魁祸首」——这个方法的特性就是只返回元素第一次出现的索引,不管你循环到的是第几次重复的元素。要拿到每个元素对应的真实位置,用Python的enumerate()函数就完美解决了。

修复后的代码

先直接上可运行的修改版:

values = [330, 210, 130, 60, 0, 240, 280, 1300, 740, 640, 520, 430, 240, 240, 240, 200, 200]
t_max = 800  # 这里替换成你实际使用的t_max值

l = []
for idx, item in enumerate(values):
    if item < t_max:
        l.append(idx)

运行这段代码后,你会得到符合预期的结果:[0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16]——重复的240对应了5、12、13、14这几个真实索引,200也对应了15、16,完全解决了你的问题。

为什么enumerate()能解决问题?

enumerate()是Python专门用来遍历序列时同时获取索引和元素的工具,它会把列表转换成一个迭代器,每次迭代返回一个(索引, 元素值)的元组。这样我们就不用再依赖index()去“找”元素位置,直接就能拿到当前元素的真实索引。

更简洁的写法(列表推导式)

如果你喜欢紧凑的代码,用列表推导式一行就能搞定:

l = [idx for idx, item in enumerate(values) if item < t_max]

效果和上面的循环完全一样,只是写法更简洁而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:17:49