x = [1,2,1,2,1,1,1]
print(x)
for i in x:
print(i)
if i == 1:
x.remove(i)
print(x)
print(x)
此时可迭代对象是x,x一直在变,x所指向的内存地址一直在变(应该是这样)
x = [1,2,1,2,1,1,1]
print(x)
# for i in x[::]: # 切片 和x[:]一样
for i in x[:]:
print(i)
if i == 1:
x.remove(i)
print(x)
print(x)
此时可迭代对象是x[:],x在变,但是x[:]没有变,x[:]直接指向了真实的地址,也就是x第一次所指向的内存地址
二、列表中包含的是元素值得引用,而不是直接包含元素值。
- 如果是直接修改序列变量的值,则与Python普通变量的情况是一样的。
- 通过下标修改序列中元素的值或通过可变序列对象自身提供的方法来增加和删除元素时,序列对象在内存中的起始地址是不变的,仅仅是被改变值得元素地址发生变化,也就是所谓的“原地操作”