一个相当容易的问题,但我仍在练习使用for循环迭代多个变量。在下面,我寻求返回一个新列表,其中x是正数的计数,y是输入数组arr.
如果输入数组为空或null,我将返回一个空数组。
这就是我所得到的!
def count_positives_sum_negatives(arr):
return [] if not arr else [(count(x), sum(y)) for x, y in arr]
目前正在接受......
TypeError:' int'对象不可迭代
答案 0 :(得分:1)
只需使用sum
理解
>>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15]
>>> sum(1 for x in arr if x > 0)
10
>>> sum(x for x in arr if x < 0)
-65
答案 1 :(得分:1)
wim的方式很好。 Numpy也适合这些类型的东西。
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15])
print([arr[arr >= 0].size, arr[arr < 0].sum()])
>> [10, -65]
答案 2 :(得分:1)
您得到的错误来自此部分for x,y in arr
,这意味着arr
应该是2个元素(或任何类似容器)的元组列表,例如{{1}但你拥有的是一个数字列表,其中不包含任何其他内容......
现在为了得到你想要的结果,你可以使用 wim 的解决方案,这需要迭代两次列表,或者你可以一次性使用
[(1,2), (5,7), (7,9)]