4

2Dリストがあり、前/次の要素が何かと等しいかどうかを確認したいとします。アクセスしないようにするための最良の方法は何list[-1][-1]ですかlist[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]):

これは正しくないようです...

4

1 に答える 1

5

これを解決する一般的な方法は、グリッドの周囲に「パディング」を追加することです。これには、グリッドから外れていることを示す番兵値(0or-1またはorなどNone)が含まれます。有効なインデックスは、from0からsize-1ではなく、from1からsize(リストの長さはsize+2)になります。

于 2012-08-05T02:50:07.160 に答える