Мне нужно уточнить, что здесь происходит, и какова реальная причина этого:
array = [0, 1, 2]
for element in array:
element += 1
print array #CHANGES NOTHING
double_array = [[0,1], [2,3]]
for element in double_array:
element[0] = "Changed!"
print double_array #THIS WORKS
for element in double_array:
element = ["Doesn't work!"]
print double_array #NOPE
Я понимаю это интуитивно, но я не уверен в теории, стоящей за этим. Мне кажется, что имя переменной в python - это неземная вещь, которая сразу же развалится, если вы поставите «=» сразу после нее. Если переменная ссылается на список, вы можете использовать «.append» после него или «[0] =» после него, и он действует как ссылка в C, но если вы назначаете ему что-то напрямую, python сразу , «о, тебе больше не нужно это имя? Хорошо, теперь оно относится только к той вещи, которую ты ему назначил, и ничего больше».
В частности, мне кажется неправильным говорить о моем первом случае, что «целые числа неизменны». В моем третьем случае список выглядит таким же неизменным, как и целое число. Каково правильное объяснение этого?