我有一个长度为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:])]
答案 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]