xozzslip
@xozzslip
Чекни мой канал о кодинге https://bit.ly/2LNBAL8

Что за странное поведение при присвоении на python?

После, казалось бы, однозначного присвоения, значение меняется сразу в двух местах.

print (squares)
squares[j][orientation][1] = place
print (squares)
#j = 0, orientation = 1, place = 5


[[[0, 3], [0, 10]], [[3, 5], [0, 10]]]
[[[0, 3], [0, 5]], [[3, 5], [0, 5]]]
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
bobrovskyserg
@bobrovskyserg
По индексам 1 и 3 у вас лежит один и тот же объект.
Возможное решение (наверное, неоптимально, вам из контекста виднее) -

print (squares)
tmp=squares[j][orientation][:] #  создаём копию
tmp[1] = place
squares[j][orientation]=tmp
print (squares)

Погуглите "мутабельность" (mutable)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы