I feel like the answers have no really answered your question properly.
Firstly, lists are mutable, this means that their contents can be changed at will. Integers are immutable, this means their contents cannot be changed. This is a simplification, for further reading on this see this.
[a, b, c]
- This constructs a list with the instantaneous values of a, b, and c.
When you iterate over this list you can change the contents of the list because the list is mutable, however, the integers themselves do not change as they are immutable. What Python does here (behind the scenes) is create a new integer object of value 1, and switch the pointer to that new object.
As a result, when you ask for the original values of a, b, and c, they are unchanged - because they cannot be changed, only replaced. Here is an example code block that demonstrates this better hopefully:
immutable_int = 1
mutable_list = [immutable_int]
for i in range(len(mutable_list)):
# mutate the list by changing the pointer of the element
mutable_list[i] = 2
print(immutable_int)
print(mutable_list)
This prints the following:
>>> 1
>>> [2]
In essence, the list can be changed in place, it is still the same list and still points to the same piece of memory. When we change the integers the previous integers we used are unchanged because integers are immutable, and so new integers must be created.
In order to achieve what you desire, you can do a number of things, the first thing I can think of is just initialise them as a list and use them like that, like so:
change_list = [1, 2, 3]
for i in range(len(change_list)):
change_list[i] = 1
print(change_list)
Let me know if my answer is incomplete or you are still confused.