pandas 如何迭代元组列表并从中生成对?

rryofs0p  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(125)

我列了一个清单:

point_list = [(54,8),(55,9),(56,10),(57,11)]

现在我想把它们组成一对

[(54,8),(55,9)],[(55,9),(56,10)],[(56,10),(57,11)],[(57,11),(54,8)]

我有一个函数,它接受两个点的坐标,并返回它们之间的距离,我怎样才能把两个点的坐标传递给函数,并把所有的距离加在一起呢?
我确实尝试过将元组放入一个列表中,但现在我陷入了如何从那里向前移动以将对作为参数传递并附加距离的困境。

f5emj3cl

f5emj3cl1#

你可以这样使用列表解析:

point_list = [(54,8),(55,9),(56,10),(57,11)]

split_points = [[point_list[i], point_list[(i+1) % len(point_list)]] for i in range(len(point_list))]

print(split_points)

输出:

[[(54, 8), (55, 9)], [(55, 9), (56, 10)], [(56, 10), (57, 11)], [(57, 11), (54, 8)]]

正如@JonSG所建议的,前面的拼接方法需要一个额外的append:

point_list = [(54,8),(55,9),(56,10),(57,11)]

split_points = [point_list[i:i+2] for i in range(len(point_list)-1)]
split_points.append([point_list[-1], point_list[0]])

print(split_points)

要使用点对,您可以执行以下操作:

def print_coordinates(x1, y1, x2, y2):
    print(x1, x2, y1, y2)

for point1, point2 in split_points:
    print_coordinates(*point1, *point2)

相关问题