如何获取包含重复元素的列表中每个元素的正确索引
如何获取列表中重复元素的实际索引?
嘿,这个问题我太熟悉了!你当前代码里的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
相关产品推荐
相关产品推荐

