Форум сайта python.su
Всем привет!
Код ниже создает матрицы для вершин, указанных в списке при помощи обычного списка (matrix):
def create_matrix(V, a): matrix = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] i = 0 j = 1 while j < V: matrix[i][j] = matrix[j][i] = 1 j += 1 i += 1 for i in matrix: print(i)
[0, 1, 0, 0, 0] [1, 0, 1, 0, 0] [0, 1, 0, 1, 0] [0, 0, 1, 0, 1] [0, 0, 0, 1, 0]
def create_matrix_using_generator(V, a): matrix = [[0] * V] * V i = 0 j = 1 while j < V: matrix[i][j] = matrix[j][i] = 1 j += 1 i += 1 for i in matrix: print(i)
[1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1]
Отредактировано artemu88 (Дек. 21, 2022 09:08:30)
Офлайн
artemu88Копируется одна и та же ссылка на список
Прошу вас подсказать, с чем это связано.
>>> lst = [[1]] * 3 >>> lst [[1], [1], [1]] >>> lst[0][0] = 2 >>> lst [[2], [2], [2]] >>>
>>> lst = [[1] for _ in range(3)] >>> lst [[1], [1], [1]] >>> lst[0][0] = 2 >>> lst [[2], [1], [1]] >>>
Офлайн
Понял. Спасибо Вам большое!
Офлайн