如何更高效地对嵌套列表指定位置的元素直接求和?
优化列表子元素求和的方法
你说得对,当处理大量子列表数据时,先把所有目标元素存入新列表再求和确实不是最优方案——既额外占用内存,还多了一步列表创建的冗余操作。Python里有更简洁高效的方式,无需创建中间列表就能直接算出总和:
方法一:生成器表达式直接求和
这是最推荐的写法,用生成器表达式配合内置的sum()函数:
total = sum(b[2] for b in a)
生成器表达式采用惰性求值逻辑,它不会像列表推导式那样一次性把所有b[2]元素都加载到内存中,而是在求和过程中逐个取出子列表的第三个元素,直接累加到总和里。当你的数据量非常大时,这种方法的内存优势会特别明显,同时代码也更简洁。
方法二:结合map()与匿名函数
如果你习惯使用map()函数,也可以用这种方式实现:
total = sum(map(lambda x: x[2], a))
不过相比生成器表达式,这种写法的可读性稍弱一些,所以更推荐第一种方法。
对比你原来的实现,这两种方法都省去了创建total_values中间列表的步骤,直接完成求和操作,不管是代码简洁度还是运行效率都更胜一筹。
内容的提问来源于stack exchange,提问作者Hyder Tom
相关产品推荐
相关产品推荐

