为什么这两次运行结果不一样,怎么理解。

img

img

换了一下new_alien=..的位置,然后两次结果就不一样,放在那个循环的外面没有达到预期的效果,这是为啥。

放到循环外,res里面插入的new_al是同一个,地址一样,所以操作一个,其他都会变,因为他们是同一个元素。
放循环内,他们虽然值一样,但是地址不一样,是不同元素

第一种是for循环中每次产生一个new_alien对象,因此加入aliens是n个不同的对象
第二种是将同一个对象加入aliensn次,后续每次修改是对这个对象的修改,因此都是一样的

第一种情况,循环30次的时候 new_alien每次都新增建地址。30次有30个地址。修改前2个地址不会影响到其他28个地址
第二种情况,循环30次都是添加同一个地址。修改第一次时候就把地址内容给改变了。输出后30个内容是一样的。