Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 避免用尽列表索引的最佳方法_Python - Fatal编程技术网

Python 避免用尽列表索引的最佳方法

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

假设我有一个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
... # 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要么我们知道,要么我们永远也不知道。:)