Python 计算距离列表

Python 计算距离列表,python,Python,我有一份清单: my_list = [A,B,G,X,F,D] 列表中的每个字母都是空间中的某个点(x,y) 我有一个计算两点之间距离的函数: dist = distance(A,B) 我需要计算列表上相邻点之间的距离列表: list_of_distances = [distance(A,B), distance(B,G), distance(G,X), distance(X,F), distance(F,D)] 问题是: 如何以最具python风格的方式进行迭代?您可以使用zip内置函数

我有一份清单:

my_list = [A,B,G,X,F,D]
列表中的每个字母都是空间中的某个点(x,y)

我有一个计算两点之间距离的函数:

dist = distance(A,B)
我需要计算列表上相邻点之间的距离列表:

list_of_distances = [distance(A,B), distance(B,G), distance(G,X), distance(X,F), distance(F,D)]
问题是:
如何以最具python风格的方式进行迭代?

您可以使用
zip
内置函数:

dist = [distance(a, b) for a, b in zip(my_list, my_list[1:])]
或者按照@DaniMesejo的建议:

 dist = list(map(distance, my_list, my_list[1:]))

另一种方式:
[*地图(距离、我的列表、我的列表[1:])]

演示:


这回答了你的问题吗。使用标准的滑动窗口,您只需计算
[窗口中a、b的距离(a、b)(我的列表,2)]
dist=[距离(我的列表[i],我的列表[i+1])范围内的i(len(我的列表)-1)]
映射可以接收多个iterables,因此您可以进行映射(距离,我的列表,我的列表[1:])是的,您会介意我在我的答案中添加这个吗?继续,我没问题
>>> my_list = [3, 1, 4, 1, 5, 9]
>>> def distance(a, b):
        return abs(a - b)

>>> [*map(distance, my_list, my_list[1:])]
[2, 3, 3, 4, 4]