Python 避免用尽列表索引的最佳方法
假设我有一个2D列表,我想检查上一个/下一个元素是否等于某个值。确保我不会访问Python 避免用尽列表索引的最佳方法,python,Python,假设我有一个2D列表,我想检查上一个/下一个元素是否等于某个值。确保我不会访问列表[-1][-1]或列表[len+1][len+1]的最佳方法是什么 下面是我尝试做的一个例子: if list[y + 1][x] == value and list[y - 1][x] == value: do something elif list[y][x + 1] == value and list[y][x - 1] == value: do something else ... # en
列表[-1][-1]
或列表[len+1][len+1]
的最佳方法是什么
下面是我尝试做的一个例子:
if list[y + 1][x] == value and list[y - 1][x] == value:
do something
elif list[y][x + 1] == value and list[y][x - 1] == value:
do something else
... # end so on
除了执行以下操作外,我看不到任何其他选项:
if y - 1 > 0 and y + 1 < len(list) and x - 1 > 0 and x + 1 < len(list[y]):
如果y-1>0和y+10和x+1
这似乎是不对的…解决这个问题的一个常见方法是在网格周围添加一些“填充”,其中包含一个指示您离开网格的哨兵值(例如
0
或-1
或无
或其他)。您的有效索引不是从0
到size-1
,而是从1
到size
(列表长度为size+2
)。Hah,不要更改处理数据的方式,更改数据本身。。。谢谢你,这是一个很好的思考方式。好吧,如果你这样写的话,你的“其他选项”看起来会更好:如果0
@pyrate无意冒犯,但是在Python中必须迭代列表的索引(2D或非2D)。我感觉到有一种更好的方法,在不了解问题的情况下我们无法知道。@kojiro-我同意这看起来不是一个好的解决方案,这里有些东西闻起来不对劲。@kojiro:我不同意。看起来他正在使用一个坐标系(它被标记为pygame——例如,它可能是一个在房间里移动的角色,或者是一块在棋盘上移动的棋子)。@DavidRobinson要么我们知道,要么我们永远也不知道。:)