You need to enable JavaScript to run this app. 如何删除列表重复元素并按索引对另一列表对应值取均值
优惠活动
大模型
产品
解决方案
定价
更多

如何删除列表重复元素并按索引对另一列表对应值取均值

实现代码

以下给出两种适用不同场景的Python实现:

场景1:重复元素可非连续(通用方案)

不管list1中重复元素是否连续出现,都会将所有相同元素对应的list2值合并计算均值,保留元素第一次出现的顺序:

from collections import defaultdict

list1 = [1200,1200,1200,2000]
list2 = [12000,14000,13000,30000]

value_map = defaultdict(list)
key_order = []

for key, val in zip(list1, list2):
    if key not in value_map:
        key_order.append(key)
    value_map[key].append(val)

list1new = key_order
# 如需整数结果可套int()转换:int(sum(value_map[k])/len(value_map[k]))
list2new = [sum(value_map[k])/len(value_map[k]) for k in key_order]

运行后输出和示例预期完全一致:
list1new = [1200, 2000]
list2new = [13000.0, 30000.0]

场景2:重复元素连续出现

如果你的list1中相同元素都是连续排列的(和示例一致),可以用itertools.groupby实现更简洁的写法:

from itertools import groupby

list1 = [1200,1200,1200,2000]
list2 = [12000,14000,13000,30000]

list1new = []
list2new = []
for key, group in groupby(zip(list1, list2), key=lambda x: x[0]):
    vals = [item[1] for item in group]
    list1new.append(key)
    list2new.append(sum(vals)/len(vals))

补充说明

  • 如果需要更规范的均值计算,可以导入statistics模块的mean函数替换手动求和除长度的写法
  • 两种方案都保留了list1元素第一次出现的顺序,不会打乱原有排列逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:57:03