gpt4 book ai didi

Python:减少元组的元组

转载 作者:太空狗 更新时间:2023-10-30 01:45:09 24 4
gpt4 key购买 nike

我正在尝试在 Python 中计算从 A 点到 B 点经过中间点列表的路径长度。 我知道该怎么做,但我确实想使用 reduce 内置函数

为什么我试了这么久,请注意是完全错误的,是这样的:

reduce(lambda x,y: math.sqrt((y[1]-y[0])**2+(x[1]-x[0])**2) , ((1,2),(3,4),(1,8)))

有什么想法吗?

谢谢。

最佳答案

你应该在你减少之前映射。

points = [(1, 2), (3, 4), (1, 8)]
distances = (math.hypot(b[0]-a[0], b[1]-a[1])
for a, b in zip(points, points[1:]))
total_distance = sum(distances)

或者,如果您必须使用reduce(),尽管sum() 更适合此目的:

import operator

total_distance = reduce(operator.add, distances)

如果你有很多点,你可能会发现 NumPy 有助于一次快速地完成所有这些:

import numpy

total_distance = numpy.hypot(*numpy.diff(numpy.array(points), axis=0)).sum()

编辑:使用math.hypot()并添加NumPy方法。

关于Python:减少元组的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com