我正在尝试编写一个函数,它将添加列表中不等于参数的所有数字。我所拥有的代码是:
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。
有什么想法吗?
答案 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