如何在for循环中引用嵌套列表中的元素



我有一个嵌套的坐标列表[[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直接是列表的子级。

如果要通过递增当前索引来访问相邻项,则应使用rangeenumerate循环。例如,

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)部分给出了你想要的

最新更新