1.深拷贝和浅拷贝
1-1浅拷贝
b=a
b[5]=6
print(a) # {1: 2, 3: 4, 5: 6}
print(b) # {1: 2, 3: 4, 5: 6}
1-2深拷贝
a={1:2,3:4}
b=a
b[5]=6
#深拷贝
import copy
c=copy.deepcopy(a)
print(c) # {1: 2, 3: 4, 5: 6}
c['name']='wangsiyu'
print(c) # {1: 2, 3: 4, 5: 6, 'name': 'wangsiyu'}
print(a,b) #1: 2, 3: 4, 5: 6} {1: 2, 3: 4, 5: 6}
2 可迭代元素迭代的时候,不要改变对象的长度,会出事的。
for k, v in m.items():
l[k+2]=v+2
for k,v in l.items():
m[k]=v
print(m)
m={1:2,3:4}
l={}
func(m,l) # {1: 2, 3: 4, 5: 6}
3 切片也是深拷贝
代码块
l1=list(range(10))
print(l1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l2=l1[:]
print(l1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l1[0]=666
print(l1) # [666, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l2) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 编写代码生成如下
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12]]列表:
代码块
ret = []
for i in range(4):
l1 = []
for j in range(5):
l1.append(i*j)
ret.append(l1)
print(ret)
代码块
ret = [[i * j for j in range(5)] for i in range(4)]
print(ret)
代码块
ret = []
for i in range(4):
ret.append(list(map(lambda x: x*i, [0, 1, 2, 3, 4])))
print(ret)
网友评论