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

How do I refer to an element in a nested list within a for-loop?

我有一个嵌套的坐标列表 [[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 是一个 for-each 循环。您无权访问当前索引,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

try/except 索引错误部分。除此之外,在最后一位数字中给出错误。或者你也可以使用 :

for i, n in enumerate(coord):
    if i == len(coord)-1:
        pass
    else:
        print(coord[i])
        print(coord[i+1])

另外,对于枚举,基本上你可以使用 range(len(coord)) 而没有 try/except 如果部分 range(len(coord)-1) 给出了你想要的