Список не видоизменяется при передаче функции в некоторых случаях - PullRequest
0 голосов
/ 14 октября 2018

Я напрямую изменяю список здесь, и все же список не обновляется после вызова функции.Локальный список в функции обновляется, но он не меняет глобального списка.Когда я попробовал с более простой функцией, список действительно видоизменялся.Является ли приведенный ниже код особым случаем, который вызывает изменение списка?

def rotate_matrix(matrix):
  width = len(matrix[0])
  height = len(matrix)

  if width != height:
    return matrix

  for layer in range(0, width // 2):
    start = layer
    end = width - layer - 1
      for offset in range(start, end):
        temp = matrix[start][offset]
        matrix[start][offset] = matrix[end - offset][start]
        matrix[end - offset][start] = matrix[end][end - offset]
        matrix[end][end - offset] = matrix[offset][end]
        matrix[offset][end] = temp
  print(matrix) # it is updated here
  return matrix


matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(rotate_matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])) # updated
print(matrix) # not updated

1 Ответ

0 голосов
/ 14 октября 2018

Вы не передали matrix в функцию, и, следовательно, она не изменилась

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...