Why will the following code increment each number:
numbers = [1, 2, 3]
for number in numbers:
numbers[numbers.index(number)] += 100
print(numbers) # prints [101, 201, 301]
but this will not?:
numbers = [1, 2, 3]
for number in numbers:
number += 100
print(numbers) # prints [1, 2, 3]
Adding to the confusion, we seem to be dealing with same object in both cases:
numbers = [1, 2, 3]
for number in numbers:
print(numbers[numbers.index(number)] is number) # prints True
I understand this has "something" to do with assigning vs mutating a value and/or memory allocation, but I cannot put my finger on what exactly is happening.