Python 列表:如果一对数字等于0 return 元素的位置

Python list: if a pair of numbers equals 0 return the positions of the elements

我正在尝试编写一个接受列表或数组的 python 函数。如果列表或数组中的任何两个数字等于零,我想 return 这两个数字的位置。

这是我目前所掌握的。我遍历列表并有一个相同列表的嵌套循环来测试外部迭代器加上嵌套迭代器是否 == 0:如果是,那么我正在尝试 return 两个数字的位置 == 0 .但它只是给了我实际的两个数字。奇怪的是下面的输出(即使它不是我想要的)应该是(3,-3)。任何输入将不胜感激

def twosum(nums):
    for x in nums:
        for y in nums:
            if x + y == 0:
                return nums[x],nums[y]
print twosum([1, 3, 5, -3])
output  = (-3, 3)

你会return nums.index(x), nums.index(y)

您必须在遍历列表时使用 enumerate(),例如:

def twosum(nums):
    for i, x in enumerate(nums):
        for j, y in enumerate(nums):
            if x + y == 0:
                return i, j

但是这个逻辑可以进一步优化为:

def twosum(nums):
    for i, x in enumerate(nums):
        if -x in nums[i:]:  # check '-'ive of the number in non-iterated list
            return x, -x