python - 如何遍历python中的浮点列表
问题描述
我正在尝试遍历 python 中的浮点列表,看起来像这样
[3.09312635991831, 2.685707263863166, 1.7249614343269735, 2.551923173039131, 2.3768648392514904]
并将它们插入函数句柄,但我似乎无法遍历浮点列表。我得到错误“浮动”对象不可迭代。这是我目前正在使用的。wherexpoint
和ypoint
是浮点数的列表,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)
解决方案
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
功能。
推荐阅读
- python-3.x - 值错误:无法从 Python 中的重复轴重新索引
- python - 顶层的枕头 png 覆盖底层并失去透明度
- angular - 发布角度项目后客户端错误
- google-api - 如何使用 Transactions API 在 Google Action 中管理付款
- oracle - Apache Nifi 解决方案将所有表从 Oracle 模式加载到 Google bigquery
- c# - __MigrationHistory 表中的两条 AutomaticMigration 记录
- django - django 模型中的 if/when 语句创建另一个模型字段
- xamarin.forms - Prism DI 容器:应用程序终止时处理容器
- powershell - 导入列表以将选择的文件从大文件夹复制到PowerShell中的新文件夹
- python - 对特定代码如何从字典列表中提取值感到困惑