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普通變量的情況是一樣的。
- 通過下標修改序列中元素的值或通過可變序列對象自身提供的方法來增加和刪除元素時,序列對象在內存中的起始地址是不變的,僅僅是被改變值得元素地址發生變化,也就是所謂的“原地操作”