我有一个要对其执行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)
答案 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。