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

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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 10,546评论 0 18
  • 目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代码的令狐葱阅读 9,744评论 0 2
  • 上帝把两群羊放在草原上,一群在南,一群在北。上帝还给羊群找了两种天敌,一种是狮子,一种是狼。 上帝对羊群说:“如果...
    钱心流阅读 2,701评论 0 1
  • 从来都不知道我是多么害怕。! 我是多么害怕,回不到从前 是多么的害怕,在梦中醒过来 所以我一直在等你! 等你回来,...
    狂野的青春阅读 1,267评论 0 0
  • 前几天和LP因为孩子的数学问题,有了些冲突,大吵一架,但我怕内在太多的情绪垃圾太多,尤其是愤怒的情绪喷薄而出伤感情...
    武上人阅读 2,481评论 0 1