如何在列表中添加不等于参数的数字?

时间:2016-09-20 23:06:37

标签: python list parameters sum

我正在尝试编写一个函数,它将添加列表中不等于参数的所有数字。我所拥有的代码是:

def suminout(nums,a,b):
    total=0
    for i in range(len(nums)):
        if nums[i]!=a or nums[i]!=b:
            total=total+nums[i]
    return total

它似乎是对列表中的所有内容进行总结。

例如,如果我打电话: suminout([1,2,3,4],1,2) 它应该返回7.但是,我得到10。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

正如Kasramvd所说的那样,你需要结合而不是分离。

这是列表理解做同样的事情。

def suminout(nums, a, b):
    total = 0
    total = sum([x for x in nums if (x!=a and x!=b)])
    return total

答案 1 :(得分:0)

您需要使用or代替def suminout(nums,a,b): total=0 for i in range(len(nums)): if nums[i]!=a and nums[i]!=b: total=total+nums[i] return total

for

您的len()逻辑可以进一步简化(不使用range()for num in nums: if num not in [a, b]: # same as: num != a and num != b total += num # same as: total = total + num ):

list comprehension

使用sum()>>> my_list = [1, 2, 3, 4] >>> sum(filter(lambda x: x !=1 and x!=4, my_list)) 5 来实现它的更好方法,如肖恩所述。或者您可以使用filter()代替列表理解:

$rootScope = _$rootScope_.$new();

答案 2 :(得分:0)

或者:

def suminout(nums, a, b):
    total = 0
    total = sum([x for x in nums if x not in (a,b)])
    return total