Я сделал цикл for, используя enumerate
из значений в матрице, и попытался присвоить значение элементам, отличным от 0, при добавлении в список элементов, равных 0. Факт в том, что исходная матрица необновляется.
Пример кода:
matrix = [[0, 0, 0], [0, 1, 0], [1, 1, 1]]
current = []
for x, i in enumerate(matrix):
for y, j in enumerate(i):
if j == 0:
current.append((x, y))
else:
#matrix[x][y] = -1 # This works
j = -1 # This doesn't
Поскольку это не работает, в этом случае не существует утилиты для использования перечисления. Поэтому я изменил код на:
matrix = [[0, 0, 0], [0, 1, 0], [1, 1, 1]]
current = []
for x in range(len(matrix)):
for y in range(len(matrix[0])):
if matrix[x][y] == 0:
current.append((x, y))
else:
matrix[x][y] = -1
Код выше IMO гораздо менее читабелен, и Pylint предлагает не использовать его с:
C0200: рассмотрите возможность использования перечисления вместо итерациис range и len (рассмотрим использование перечисления)