我在python中遇到一个数组有点麻烦.我想循环遍历它,并将元素n与元素n-1进行比较.例如:
[(11, 11), (11, 10), (11, 9), (11, 8), (11, 7), (11, 6), (11, 5),
(11, 4), (10, 4), (9, 4), (8, 4), (8, 5), (7, 5), (6, 5), (5, 5),
(4, 5), (3, 5), (3, 4), (3, 3), (2, 3), (1, 3), (1, 2), (1, 1), (1, 0)]
使用上面的数组,我想应用以下移动/逻辑:
> 0,1 =对
> 1,0 =下降
> -1,0 =向上
> 0,-1 =左
因此,如果我们看到的第一个值的数组元素小于我想要打印的前一个值.
所以上面数组的结果是(假设开始总是0,0)
[Start, down, right, right, right, down, down, right, right, down,
down, down, down, down, left, down, down, down, right, right, right,
right, right, right, right]
如果这有点令人困惑,那么解释如此道歉是一个棘手的问题.此外,元素将永远不会对角线,因此它永远不会从(1,1)到(2,2),在任何给定时间,2个子元素中的一个将发生变化.
解决方法:
考虑到您的坐标数组称为坐标,您可以这样做:
steps = [(x2-x1, y2-y1) for ((x1, y1), (x2, y2)) in zip(coords, coords[1:])]
说明:
> coords [1:]表示从第二个开始的所有坐标对
> zip(coor