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

如何在Python中计算嵌套列表各子列表的元素平均值?报错解决

嵌套列表子列表平均值计算问题

问题背景

我有一个嵌套列表L,想要计算该列表中每个子列表的元素平均值,但运行代码时出现错误,相关信息如下:

原代码

L=[[], [1.3342713788981633], [1.3342713788981633], [0.40896852187708455,1,3]]
L_avg=[(i+j)/len[i,j] for [i,j] in L]
print(L_avg)

报错信息

in <listcomp>
    L_avg=[(i+j)/len[i,j] for [i,j] in L]

ValueError: not enough values to unpack (expected 2, got 0)

预期输出

L_avg=[[], [1.3342713788981633], [1.3342713788981633], [(0.40896852187708455+1+3)/3]]

错误原因

  1. 强制解包不匹配:代码里[i,j] in L要求每个子列表必须有2个元素,但实际子列表长度有0、1、3三种情况,无法完成固定长度的解包,触发ValueError。
  2. 长度计算语法错误:len[i,j]是错误写法,获取列表长度应该用len(子列表),而非下标访问方式。
  3. 总和计算不通用:硬编码i+j只能计算双元素列表的总和,无法适配单元素、多元素或空列表的场景。

解决代码

针对不同长度的子列表做适配,用sum()计算总和,同时处理空列表的情况:

L = [[], [1.3342713788981633], [1.3342713788981633], [0.40896852187708455, 1, 3]]
L_avg = []
for sub_list in L:
    if not sub_list:
        L_avg.append([])
    else:
        avg = sum(sub_list) / len(sub_list)
        L_avg.append([avg])
print(L_avg)

也可以用列表推导式简化写法:

L = [[], [1.3342713788981633], [1.3342713788981633], [0.40896852187708455, 1, 3]]
L_avg = [[] if not sub else [sum(sub)/len(sub)] for sub in L]
print(L_avg)

运行后输出与预期一致:

[[], [1.3342713788981633], [1.3342713788981633], [1.4696561739590282]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:45:42