如何获取列表中每两个元素的组合求和结果?
实现列表中两两不同元素求和的方法
给定列表:
stuff = [1, 2, 5, 7]
需要生成名为sum_list的新列表,存储所有两两不同元素的求和结果(不重复计算同一对元素的不同顺序,比如只算1+2而不算2+1),最终结果为[3, 6, 8, 7, 9, 12]。以下是两种常用实现方式:
方法一:使用标准库itertools.combinations(简洁高效)
itertools.combinations可以直接生成列表中指定长度的不重复元素组合,结合列表推导式就能快速得到结果:
from itertools import combinations stuff = [1, 2, 5, 7] sum_list = [a + b for a, b in combinations(stuff, 2)] print(sum_list) # 输出: [3, 6, 8, 7, 9, 12]
combinations(stuff, 2)会生成(1,2)、(1,5)、(1,7)、(2,5)、(2,7)、(5,7)这些符合要求的元素对,再对每对求和即可。
方法二:手动嵌套循环(适合理解原理)
如果不想依赖标准库,可以通过双层循环控制索引,确保只计算一次两两组合:
stuff = [1, 2, 5, 7] sum_list = [] for i in range(len(stuff)): # 内层循环从i+1开始,避免重复计算同一对元素 for j in range(i + 1, len(stuff)): sum_list.append(stuff[i] + stuff[j]) print(sum_list) # 输出: [3, 6, 8, 7, 9, 12]
外层循环遍历每个元素的索引i,内层循环从i+1开始遍历后续元素,这样就不会出现(stuff[j], stuff[i])这种重复组合,保证结果符合要求。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

