列表中两个元素之和的可能组合

时间:2019-06-07 20:13:09

标签: python list

我有一个长度为4的列表(例如,nums = [4、1、8、7])。我想找到此列表中两个元素之和的不同可能组合。我写了以下代码,它可以正常工作。如何使它更简单?请注意,我们不能使用任何软件包。

my_sum = [i + j for i , j in zip(nums, nums[1:])] + [i + j for i , j in zip(nums, nums[2:])]  + [i + j for i , j in zip(nums, nums[3:])] 

1 个答案:

答案 0 :(得分:2)

我提供的解决方案还可以处理重复项。您可以使用set和list理解,而无需使用任何程序包。循环遍历列表,并对所有不同元素求和。条件i1!=i2可确保您添加不同的元素

案例1

nums = [4, 1, 8, 7]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [5, 8, 9, 11, 12, 15]

案例2

nums = [1, 1, 8, 7]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [8, 9, 2, 15]

案例3

nums = [4,1,4]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [8, 5]