Python嵌套列表列求和:寻求更简洁/pythonic的实现方式
计算嵌套列表的列总和:更Pythonic的实现方式
针对你的需求,有几种比嵌套循环更简洁高效的实现方式,以下是具体方案:
1. 纯Python最简方案:zip() + sum()
这是最符合Python风格的写法,利用zip(*nested_list)将嵌套列表转置(把列变成行),再对每一行(原列)求和:
list_a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] def sum_columns(nested_list): return [sum(col) for col in zip(*nested_list)] print(sum_columns(list_a)) # 输出: [12, 15, 18]
或者更精简的一行写法:
sum_columns = lambda lst: [sum(col) for col in zip(*lst)]
2. 修复你的列表推导式尝试
你提到想用列表推导式但没成功,其实可以基于原逻辑改写,避免嵌套循环的冗余:
def sum_columns(nested_list): col_len = len(nested_list[0]) return [sum(row[col] for row in nested_list) for col in range(col_len)]
这里把内层循环的求和逻辑用生成器表达式替代,代码更紧凑。另外注意:原代码里误用了全局变量list_a,应该用函数参数nested_list,保证函数的通用性。
3. 用NumPy实现(适合大规模数据)
如果处理的是大数据集,NumPy的向量运算效率会远高于纯Python循环:
import numpy as np list_a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] arr = np.array(list_a) col_sums = arr.sum(axis=0).tolist() # axis=0表示按列求和 print(col_sums) # 输出: [12, 15, 18]
NumPy会自动优化运算,尤其当嵌套列表规模很大时,性能优势明显。
内容的提问来源于stack exchange,提问作者Jesse Sealand
相关产品推荐
相关产品推荐

