Итак, у меня есть вопрос по созданию матрицы, но я не уверен, почему значения являются общими?Не уверен, из-за того, что последовательность является ссылочным типом или нет?
Если вы напишите этот код в pythontutor, вы обнаружите, что основной кортеж указывает на один и тот же кортеж строки и является общим.Я понимаю, что если бы я сделал return row*n
, он был бы доступен для общего доступа, но Почему при объединении кортежей или добавлении списков, почему он затем будет использоваться совместно (ссылаясь на тот же адрес памяти) ?
def make_matrix(n):
row = (0, )*n
board = ()
for i in range(n):
board += (row,)
return board
matrix = make_board(4)
print(matrix)
По сравнению с этим кодом, где каждая строка отдельно (0,0,0,0) и не используется совместно.
def make_board(n):
return tuple(tuple(0 for i in range(n)) for i in range(n))
matrix = make_board(4)
print(matrix)