计算在Python中加起来等于特定值的数字对

时间:2018-12-27 01:00:31

标签: python-3.x

我想计算列表中可以添加多少对数字到一个特定的数字,这是我在python中的代码,但输出不是应该的

list = [1,2,3,4]
x=3
count = 0
for i in range(len(list)):
for j in range(len(list)):
if i + j == x:
count+=1
print(count)

2 个答案:

答案 0 :(得分:1)

您可以使用the built-in itertools module中的函数来简化代码,具体取决于您希望如何遍历列表,即组合,替换组合或产品。

import itertools as itt

in_list = [1,2,3,4]
tgt_num = 3
count = 0
for a,b in itt.combinations(in_list, 2): # returns 1
# for a,b in itt.combinations_with_replacement(in_list, 2): # returns 1
# for a,b in itt.product(in_list, in_list): # returns 2
    if a + b == tgt_num:
            count += 1
print(count)

答案 1 :(得分:0)

您的代码存在一些问题: 一是它从不直接引用列表中的项目。因此,仅当列表中的数字按升序排列,每个数字相隔一个且从1开始时才起作用。 另一个是对数字对进行太多次的迭代。 最后,还有一些缩进问题,但是我猜想这些只是在复制粘贴中丢失了。我试图重新缩进,但是当我运行它时,我得到了“ 4”,应该是“ 1”。 这是结合索引列表的版本,可以解决上述问题。

list = [1,2,3,4]
x = 3
count = 0
for i in range(0,len(list)):
    pair1 = list[i]
    pair2 = list[i+1:]
    for j in range(0,len(pair2)):
        if pair1 + pair2[j] == x:
            count += 1
print(count)