我有一个嵌套的坐标列表[[x1, y1],[x2, y2],[x3,y3]...]
。
我想使用for-loop
来确定两个连续点之间在x方向上的距离。我想稍后对y方向做同样的事情。这是我迄今为止的尝试:
p1=[X1, Y1]
p2=[X2, Y2]
p3=[X3, Y3]
p4=[X4, Y4]
p5=[X5, Y5]
coordiantes = [p1, p2, p3, p4, p5]
for i in coordinates:
p1_x = i[0]
p2_x = i[0]+1
p1_y = i[1]
p2_y = i[1]+1
distance_x = p2_x - p1_x
显然,i[0]+1
不会在下一个列表中为您提供后续的x值,而是将1
添加到第一个x值中。
我的问题是如何引用嵌套列表中的后续x值?所以,如果i
引用了p1
,我也想在那个循环中得到p2
。
我还尝试添加另一个变量j
并将其赋值为j = i + 1
,以便使用j[0]引用后续的x值。然而,我得到了一个错误,不能将列表连接到int.
提前谢谢!
for i in coordinates
是每个循环的一个。您没有访问当前索引的权限,i
直接是列表的子级。
如果要通过递增当前索引来访问相邻项,则应使用range
或enumerate
循环。例如,
for ind in range(len(coordinates)-1):
p1_x = coordinates[ind][0]
p2_x = coordinates[ind+1][0]
p1_y = coordinates[ind][1]
p2_y = coordinates[ind+1][1]
distance_x = p2_x - p1_x
范围限制为len-1,因为我们不想处理最后一个元素(ind+1将超出范围(。
for i, n in enumerate(coord):
try:
print(coord[i]
print(coord[i+1])
except IndexError:
pass
尝试/排除索引错误的部分。除此之外,在最后一位中给出错误。或者你也可以使用:
for i, n in enumerate(coord):
if i == len(coord)-1:
pass
else:
print(coord[i])
print(coord[i+1])
此外,对于枚举,基本上你可以使用range(len(coord))
,而不需要尝试/例外,如果range(len(coord)-1)
部分给出了你想要的