//编辑 - 所以我试图找到一对总和,但不包括重复的对,如(n1,n2)和(n2,n1)[其中一个要被忽略]
所以这是我的代码的一部分,我想在这里实现的是
但我似乎无法弄清楚如何正确递增计数变量 请指教,谢谢!
count=1
for n1 in number_list:
for n2 in number_list:
sum=n1+n2
if (n2,n1) not in pair_dict and n1!=n2:
pair_dict[(n1,n2)]=sum
sum_dict[sum]=(n1,n2)
if sum_dict[sum]==(n2,n1):
count_dict[sum]=count
else:
count+=1
count_dict[sum]=count
else:
pass
测试用例
2 1 3 4
5
10 20 40 45 5 15 25
25
24 23 8 29 31 5
无
答案 0 :(得分:1)
从问题的上半部分看,您似乎正在尝试查找列表中每对元素的总和,并计算每次总和发生的次数。
from itertools import combinations
from collections import Counter
number_list = [1, 2, 3, 4, 5]
sum_counter = Counter(map(sum, combinations(number_list, 2)))
print(sum_counter)
# {3: 1, 4: 1, 5: 2, 6: 2, 7: 2, 8: 1, 9: 1}
通过更改2
的句子中的combinations
,可以很容易地推广计算三元组,四元组等的总和。
答案 1 :(得分:-1)
试试这个:
count=1
for n1 in number_list:
for n2 in number_list:
sum=n1+n2
if (n2,n1) not in pair_dict and n1!=n2:
pair_dict[(n1,n2)]=sum
sum_dict[sum]=(n1,n2)
if sum_dict[sum]==(n2,n1):
count_dict[sum]=count
else:
count+=1
count_dict[sum]+=count
else:
pass