考虑包含各种要点的列表
l=[(point1,point2),(point3,point4),....,(point 2n-1, point 2n)]
现在我们有一个计算点之间距离的函数
distance(point1,point2)
如何对列表中的所有点应用该功能?
答案 0 :(得分:4)
您可以使用itertools.starmap
:
from itertools import starmap
list(starmap(distance, l))
或只是一个list comprehension:
[distance(*p) for p in l] # hence the name `starmap`
如果您实际上是在寻找任意一对点(坐标对)的距离,则可以使用itertools.product
:
from itertools import starmap, product
list(starmap(distance, product(l, repeat=2)))
# or
[distance(*points) for points in product(l, repeat=2)]
如果您不想将点与自己配对并且不关心顺序(毕竟,“距离”表示对称性),请使用combinations
:
from itertools import starmap, combinations
list(starmap(distance, combinations(l, 2)))
答案 1 :(得分:0)
压缩列表切片并使用列表理解
distances = [distance(p1, p2) for p1, p2 in list(zip(l, l[1:]))]
list(zip(l, l[1:]))
的作用是什么?它结合了两个相邻的元素
>>> l = [(0,1), (1,2), (2,3), (3,4)]
>>> list(zip(l, l[1:]))
[((0, 1), (1, 2)), ((1, 2), (2, 3)), ((2, 3), (3, 4))]
答案 2 :(得分:0)
您可以使用一个简单的for
循环:
result = []
for p1, p2 in l:
result.append(distance(p1,p2))