【发布时间】:2019-06-24 15:27:12
【问题描述】:
我正在尝试迭代列表中的整数对。我想返回总和等于某个变量值的对。
当整数列表没有重复数字时,这似乎工作得很好。但是,一旦我将重复数字添加到列表中,循环似乎对它的位置感到困惑。我是根据我的陈述猜测的:
打印(list.index(item)) 打印(list.index(item2))
这是我的代码:
working_list = [1,2,3,4,5]
broken_list = [1,3,3,4,5]
def find_pairs(list, k):
pairs_list = []
for item in list:
for item2 in list:
print(list.index(item))
print(list.index(item2))
if list.index(item) < list.index(item2):
sum = item + item2;
if sum == k:
pair = (item, item2)
pairs_list.append(pair)
return pairs_list
### First parameter is the name is the list to check.
### Second parameter is the integer you're looking for each pair to sum to.
find_pairs(broken_list, 6)
working_list 很好。当我运行 broken_list 寻找总和为 6 的对时,我会返回 (1,5),但我也应该返回 (3,3),但我没有。
【问题讨论】:
-
对不起,我在第一条评论中犯了一个错误。 list.index() 返回项目与输入匹配的第一个索引。因此,当您有两个相同的项目时,即“3”,
list.index(3)将返回出现 3 的第一个索引。所以当item == 3和item2 == 3时if语句不会通过
标签: python-3.x list loops