1 序列复制方法
python不涉及指针,当定义一个序列a时,直接令b=a,ab会指向同一片内存空间,此时改变a或的值,另外一个也会改变
a=[12,34,1]
a.append(1)
b=a
print('a的id',id(a)) # a的id 20164232
print('d的id',id(b)) # b的id 22654600
print("a=",a) # a= [12, 34, 1, 1]
print("b=",b) # b= [12, 34, 1, 1]
而对于变量,不存在此问题
c=1
d=2
c=d
d=3
print('c的id :',id(c)) # c的id : 1801316288
print('c=',c) # c= 2
print('d的id :',id(d)) # d的id : 1801316304
print('d=',d) # d= 3
如果想开辟另一段内存来保存序列,可以采用以下方式
method1,list( )方式:
a=[12,34,1]
a.append(1)
b=list(a) # 开辟内存
print('a的id',id(a)) # 20950664
print('b的id',id(b)) # 57165064
print("a=",a)
print("b=",b)
method2,切片方式:
a=[12,34,1]
a.append(1)
b=a[:] # 返回新的序列,会开辟内存
print('a的id',id(a)) # 14331528
print('b的id',id(b)) # 14501096
print("a=",a)
print("b=",b)
method3,
a=[12,34,1]
a.append(1)
b=a* 1 # 返回新的序列,会开辟内存
print('a的id',id(a)) # 14331528
print('b的id',id(b)) # 14501096
print("a=",a)
print("b=",b)
method4,
import copy
a=[12,34,1]
a.append(1)
b=copy.copy(a) # 返回新的序列,会开辟内存
print('a的id',id(a)) # 14331528
print('b的id',id(b)) # 14501096
print("a=",a)
print("b=",b)