Я новичок в Python, но я понимаю, что так делать не следует, поэтому, пожалуйста, рассматривайте следующие фрагменты кода как чисто образовательные :-)
Сейчас я читаю ' Изучение Python» и попытка полностью понять следующий пример:
>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
... x += 1
...
>>> L
[1, 2, 3, 4, 5]
Я не понял, связано ли это поведение каким-то образом с неизменностью числовых типов, поэтому я провел следующий тест:
>>> L = [[1], [2], [3], [4], [5]]
>>> for x in L:
... x += ['_']
...
>>> L
[[1, '_'], [2, '_'], [3, '_'], [4, '_'], [5, '_']]
Вопрос: что делает list не изменился в первом коде и изменился во втором?
Моя интуиция подсказывает, что синтаксис вводит в заблуждение и что:
x += 1
для целого числа действительно означает x = x + 1
(таким образом присваивая новую ссылку)x += ['_']
для списка на самом деле означает x.extend('_')
(таким образом, изменяя список на месте)