Переверните индекс, если он находится за пределами диапазона (Python 3) - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь получить доступ к соседним элементам (сверху, снизу, слева и справа) в виде квадратного 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]
]

Как заставить его «перевернуться», поэтому в списке l с 3 элементами вместо того, чтобы выдавать ошибку при доступе к l[3], этобудет просто получить доступ к l[0] вместо?

1 Ответ

0 голосов
/ 22 сентября 2018

Лучший способ выполнить «переворачивание» или «обтекание», как я бы сказал, это использовать модуль:

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

Если вы на 100% уверены в длине спискаявляется константой, просто жестко закодируйте значение правой части модуля в ваш код:

x[index % 3]

Это потому, что вы можете описать модуль как удаление как можно большего числа кратных числа RHS из числа LHS, возвращаядолина осталась.Таким образом, x % y возвращает остаток после (этажа) деления x на y.

...