正数//负数

时间:2016-09-22 16:26:07

标签: python list-comprehension multiple-variable-return

一个相当容易的问题,但我仍在练习使用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'对象不可迭代

3 个答案:

答案 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)]
相关问题