如果超出范围,则滚动索引(Python 3)

时间:2018-09-22 19:19:52

标签: python arrays multidimensional-array

我正在尝试访问方形2D列表中的相邻元素(上,下,左和右)。但是,当我要查看的元素位于2D列表的“边缘”上时,它将尝试访问不存在的列表索引。这是我正在使用的代码:

surroundings = [
                my_2D_array[currentY+1][currentX],
                my_2D_array[currentY-1][currentX],
                my_2D_array[currentY][currentX+1],
                my_2D_array[currentY][currentX-1]
]

我如何使其“滚动”,所以在包含3个项目的列表l中,它不会访问l[3]而是抛出错误,而是直接访问l[0]

1 个答案:

答案 0 :(得分:0)

执行“翻转”或“环绕”的最佳方法是使用模数:

>>> x = [1, 2, 3]
>>> x[3 % len(x)]
1
>>> 3 % len(x)  # 3 % 3 is 0
0

如果您100%确定列表的长度是恒定的,只需将模数右侧值硬编码到您的代码中即可:

x[index % 3]

这是因为您可以将模数描述为从LHS中删除RHS数的许多倍,然后返回剩余的值。因此,x % y返回(底数)将x除以y之后的余数。