求解两个和:NoneType'是不可迭代的

时间:2017-05-30 02:48:22

标签: python

问题陈述:给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

我的解决方案(试图比暴力方法更好):

def twoSum(nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """
    for i in range(0,len(nums)):
        if (target - nums[i]) in nums.remove(nums[i]):  #error
            if i != nums.index(target - nums[i]):
                return i, nums.index(target - nums[i])

我一直在Line 9: TypeError: argument of type 'NoneType' is not iterable

我相信.remove()会返回一个列表,我正在尝试检查列表中是否有target - nums[i]

2 个答案:

答案 0 :(得分:1)

remove()返回None。试试这个:

def twoSum(nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """
    for i in range(0,len(nums)):
        nums.remove(nums[i])
        if (target - nums[i]) in nums:
            if i != nums.index(target - nums[i]):
                return i, nums.index(target - nums[i])

或者,如果您需要维护nums,请复制并删除:

def twoSum(nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """
    for i in range(0,len(nums)):
        nums_copy = list(nums)
        nums_copy.remove(nums[i])
        if (target - nums[i]) in nums_copy:
            if i != nums.index(target - nums[i]):
                return i, nums.index(target - nums[i])

答案 1 :(得分:0)

a.remove()不会返回列表。它返回None

>>> a_list = [1, 2]
>>> print(a_list.remove(1))
None
>>> print(a_list)
>>> [2]

由于错误消息建议迭代对象,因此需要一个可迭代的对象。