Python-在单个数组上执行多个计算?

时间:2019-12-23 23:38:10

标签: python arrays python-3.x list numpy

我有一个要对其执行2次计算的数组。

1)我想为每个数组值取不大于x的最大整数,将该值除以3,然后减去2。

2)然后,我想对数组值求和。

这是我的剧本:

mass = [1,2,3,4,5]

def Multiply(x):
    return (math.floor(x/3) - 2)

for i in mass: 
    new_mass = Multiply(i)

    print(new_mass)

当我运行脚本时,它可以按预期工作。我得到:

-2 -2 -1 -1 -1

但是,当尝试对“ total”变量中的new_mass求和时,出现以下错误:

total = sum(new_mass)
print(total)

"TypeError: 'int' object is not iterable"

有人可以帮忙吗?下面是完整的代码:

mass = [1,2,3,4,5]

def Multiply(x):
    return (math.floor(x/3) - 2)

for i in mass: 
    new_mass = Multiply(i)

    print(new_mass)

total = sum(new_mass)
print(total)

2 个答案:

答案 0 :(得分:4)

new_mass是一个整数,每次通过i的循环都会被覆盖。

在开始时定义总计,并在循环中求和,然后打印。

类似:

mass = [1,2,3,4,5]
total = 0 

def Multiply(x):
    return (math.floor(x/3) - 2)

for i in mass: 
    new_mass = Multiply(i)
    total = total + new_mass
    print(new_mass)

print(total)

如果要将计算写回到数组,它将看起来像这样:(未测试)

mass = [1,2,3,4,5]

def Multiply(x):
    return (math.floor(x/3) - 2)

for i in mass: 
    i = Multiply(i)
    print(i)

print(sum(mass))

答案 1 :(得分:0)

这是您想要的吗?

import numpy as np
mass = np.array([1,2,3,4,5])
newmass = mass / 3 - 2
np.floor(newmass).sum()

这将返回-7.0。

https://repl.it/@shinokada/stackoverflow001