将一个列表的数据复制到另外一个列表中。
1 a = [1,2,3] #定义列表a 2 3 b = a[:] #将列表a的切片赋值给b,也可以理解为将b的值设置为a[:] 4 5 print(a) #打印列表a 6 print(b) #打印列表b 7 8 print(id(a)) #打印一下列表a的内存地址 140053600489344 9 print(id(b)) #打印一下列表b的内存地址 140053600514432 10 11 a.append('4') #向a列表末尾追加字符串'4' 12 print(a) #打印列表看看 13 print(id(a)) #打印列表a的内存地址 140053600489344,跟上面的一样,表示是就地追加,没有开辟新的内存 14 15 b.append('5') 16 print(b) 17 print(id(b)) #打印列表b的内存地址 140053600514432,跟上面的一样,表示是就地追加,没有开辟新的内存 18 19 '''将列表a的切片赋值给列表b,那么列表a和列表b是两个不同的对象,在内存中都有独立的空间。 20 ''' 21 22 c = ['a','b','c'] #定义列表c 23 d = c #将列表c直接赋值给d 24 25 print(c); #打印列表c 26 print(d); #打印列表d 27 28 print(id(c)) #打印内存地址 140179340729280 29 print(id(d)) #打印内存地址 140179340729280 30 31 c.append('5'); #向列表c追加字符串'5'; 32 print(c); #打印列表c,输出:['a', 'b', 'c', '5'] 33 d.append('6'); #向列表d追加字符串'6'; 34 print(c); #打印列表c,输出:['a', 'b', 'c', '5', '6'] 35 print(d); #打印列表d,输出:['a', 'b', 'c', '5', '6'] 36 print(id(c)); #查看修改列表后的内存地址:140179340729280 37 print(id(d)); #查看修改列表后的内存地址:140179340729280
总结:
1,将列表复制给列表,要用切片。这样子不会破坏原列表,而只是将列表的副本给了新标签。
2,变量无类型,对象有类型。
3,变量只是对象贴的标一个标签。
4,列表是修改是"就地"修改,不会改变内存地址。也就是说不会在内存中开辟另一块空间来存储修改后的列表。