我想计算列表中可以添加多少对数字到一个特定的数字,这是我在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)
答案 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)