为什么这次休息不起作用?我应该得到[0,1]返回,而不是[0,1,1,0]

时间:2019-06-11 15:35:54

标签: python-3.x break

不知道为什么返回[0,1,1,0]而不返回[0,1]

def TwoSum(nums,target):
        c = []
        for i in range(0,len(nums)):
            for j in range(0,len(nums)):
                if nums[i] + nums[j] == target:
                    c.append(i)
                    c.append(j)
                    break     
        return c  



print(TwoSum([2, 7, 11, 15], 9))

2 个答案:

答案 0 :(得分:1)

简单地说,您的代码的问题是它扫描(2,7)两次:向前和向后。

首先,它在外部for循环中选择2,并发现7有效,因为2 + 7 =9。因此,它将2和7的位置加到c。现在,c = [0,1]

但是随后它在外部for循环中选择7,并发现2有效,因为7 + 2 =9。因此,它将7和2的位置加到c上。现在,c = [0,1,1,0]

答案 1 :(得分:0)

break仅停止内部循环,如果要立即返回,只需使用return c

请告诉我这是否可行:

def TwoSum(nums,target):
        c = []
        for i in range(0,len(nums)):
            for j in range(0,len(nums)):
                if nums[i] + nums[j] == target:
                    c.append(i)
                    c.append(j)
                    return c     
        return c  



print(TwoSum([2, 7, 11, 15], 9))