I have slightly modified your code here, but the essense is the same.
>>> my_list = []
>>> for _ in range(10):
... new_object = dict()
... my_list.append(new_object)
...
>>> my_list
[{}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
>>> my_list[0]
{}
>>> my_list[1]
{}
>>> id(my_list[0])
140200988731072
>>> id(my_list[1])
140200988731136
>>> id(my_list[3])
140200988731264
>>> id(my_list[4])
140200988731328
>>> id(my_list[2])
140200988731200
>>>
As you can see that my_list's first, second or third object are visible the same and none of them have any content but they are different.
In Python id(inbuilt function) is used to identify the unique hash code given to each object living in the python memory. So as I check them, each object has a unique id.
As you may now understand, every object is Python is identified by its unique id not by its visible name. Also Python list uses pointers(internally) to hold on to its objects. So each unique/new object has a new memory location or new pointer location.
my_list.append(new_object)?new_object.apend(my_list)should probably bemy_list.append(new_object)