如何计算嵌套列表中各子列表的元素和并生成结果列表?
嘿,这个需求我碰到过好多次啦,给你分享几个实用的Python实现方式,从简洁到易理解的都有:
1. 最简洁的列表推导式写法
这是Python里处理这类问题的首选方案,一行代码就能搞定,可读性还极强:
# 示例嵌套列表 nested_list = [[10, 20, 30], [40, 50, 73], [80, 90, 12]] # 计算每个子列表的和并生成新列表 sum_list = [sum(sublist) for sublist in nested_list] print(sum_list) # 输出: [60, 163, 182]
原理很简单:遍历嵌套列表中的每一个子列表,用Python内置的sum()函数直接计算子列表的元素总和,最后把所有结果收集到新列表sum_list里。
2. 适合新手的普通循环写法
如果你刚接触Python,觉得列表推导式有点抽象,用普通的循环一步步写会更清晰:
nested_list = [[10, 20, 30], [40, 50, 73], [80, 90, 12]] sum_list = [] # 外层循环遍历每个子列表 for sublist in nested_list: sub_total = 0 # 内层循环累加子列表里的每个元素 for num in sublist: sub_total += num # 把当前子列表的和添加到结果列表 sum_list.append(sub_total) print(sum_list) # 输出: [60, 163, 182]
这种写法把每一步都拆解开,能很清楚看到“初始化总和→累加元素→添加结果”的完整流程,新手更容易理解。
3. 鲁棒性更强的兼容写法(处理非数字元素)
如果你的嵌套列表里可能混有非数字类型(比如字符串、布尔值),可以加个类型判断,避免代码报错:
nested_list = [[10, 20, "abc"], [40, True, 73], [80, "xyz", 12]] sum_list = [] for sublist in nested_list: sub_total = 0 for item in sublist: # 只累加整数和浮点数类型的元素 if isinstance(item, (int, float)): sub_total += item sum_list.append(sub_total) print(sum_list) # 输出: [30, 114, 92]
这里利用isinstance()函数过滤出数字类型的元素,即使子列表里有其他类型的内容,代码也能正常运行,只会计算有效数字的和。
内容的提问来源于stack exchange,提问作者Vishal Dutta
相关产品推荐
相关产品推荐

