python在列表中找出两个数相加等于目标值返回这两个数在列表中的下标(TwoSum)

代码实现: 

def twosum(alist, targetnum):
    for i, j in enumerate(alist):
        k = i+1
        if alist[k:].count(targetnum - j) > 0:
            for n in range(alist[k:].count(targetnum - j)):
                b = alist.index(targetnum - j, k)
                print(i, b)
                k = b+1


a = [1, 3, 4, 6, -3, 4, 1, 3, 8, 9, 3, 0, -3, 6, 0, 2, 9]
twosum(a, 6)

 输出结果:

1 7
1 10
2 15
3 11
3 14
4 9
4 16
5 15
7 10
9 12
11 13
12 16
13 14

逐行说明: 

#定义twosum函数,接收参数为数组及目标值
def twosum(alist, targetnum):
#使用enumerate函数获取列表的下标和值
    for i, j in enumerate(alist):
#控制targetnum - j的结果在列表中的搜索位置,从下标i的下一个位置开始搜索,用于去重
        k = i+1
#检查targetnum - j的值是否在列表索引k之后出现
        if alist[k:].count(targetnum - j) > 0:
#如果targetnum - j的值存在于列表索引k之后,则统计出现次数,用于控制循环
            for n in range(alist[k:].count(targetnum - j)):
#使用index函数返回targetnum - j的索引值
                b = alist.index(targetnum - j, k)
#打印这两个数的索引下标
                print(i, b)
#重置搜索位置
                k = b+1


#给定列表a
a = [1, 3, 4, 6, -3, 4, 1, 3, 8, 9, 3, 0, -3, 6, 0, 2, 9]
#调用函数
twosum(a, 6)

 

你可能感兴趣的:(python)