首页 > 解决方案 > 如何遍历python中的浮点列表

问题描述

我正在尝试遍历 python 中的浮点列表,看起来像这样

[3.09312635991831, 2.685707263863166, 1.7249614343269735, 2.551923173039131, 2.3768648392514904] 

并将它们插入函数句柄,但我似乎无法遍历浮点列表。我得到错误“浮动”对象不可迭代。这是我目前正在使用的。wherexpointypoint是浮点数的列表,func是表达式func = lambda x,y: x**2 + y**2

def monte_carlo_integral(a,b,c,n,func):
    T = triangle_area(a, b, c)
    left = T*(1/n)
    points = random_numbers(a, b, c, n, 1)
    xpoint = [item[0] for item in points]
    ypoint = [item[1] for item in points]
    for i in range(n):
        right = sum(func(xpoint[i],ypoint[i]))
    print(right)

我在这里重现了这个问题。

func = lambda x,y: x**2 + y**2
x = [2.9326170613860096, 1.8654993478646646, 2.878679040963291, 1.2534822780679544, 2.9724667148405075]
y = [3.7757464252380686, 1.1428831196926126, 2.107894507044161, 1.8353208404114492, 3.868876505529935]
for i in range(5):
    summation = sum(func(x[i],y[i]))
    
print(summation)

标签: python

解决方案


func = lambda x,y: x**2 + y**2
for i in range(5):
    summation = sum(func(x[i],y[i]))

你的问题是func(x[i],y[i])返回一个浮点数。然后你尝试调用sum这个奇异的浮点数。

你可能想要的是这样的:

func = lambda x,y: x**2 + y**2
summation = 0
for i in range(5):
    summation += func(x[i],y[i])

或者更好的是,这个:

func = lambda x,y: x**2 + y**2
summation = sum(func(x[i],y[i]) for i in range(5))

或者更好的是,这个:

summation = sum(xi**2 + yi**2 for xi, yi in zip(x, y))

还要注意math.hypot功能。


推荐阅读