【第63天】python全栈从入门到放弃

2019-09-28  本文已影响0人  36140820cbfd

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)
上一篇 下一篇

猜你喜欢

热点阅读