深浅拷贝

阳光穿透心脏的1/2处 2022-01-06 10:57 494阅读 0赞

1. 基础数据类型补充

之前已经发过大多数的基本数据类型的知识

join()把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串

split() 切割. 切割的结果是列表

列表和字典: 都不能在循环的时候直接删除

把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)

  1. 删除球类
  2. lst = ["篮球", "足球", "羽毛球", "台球", "网游"]
  3. li = []
  4. for el in lst:
  5. if "球" in el:
  6. li.append(el)
  7. for el in li:
  8. lst.remove(el)
  9. print(lst) #["网游"]

fromkeys()

易错1: 返回新字典. 不会更改老字典

  1. dic = {}
  2. xdic = dic.fromkeys("我是","嘿嘿嘿")
  3. print(dic) # {}
  4. print(xdic) # {'我': '嘿嘿嘿', '是': '嘿嘿嘿'}

易错2: 当value是可变的数据类型. 各个key共享同一个可变的数据类型. 其中一个被改变了. 其他都跟着变

  1. d = dict.fromkeys("我是",[])
  2. print(d) # {'我': [], '是': []}
  3. d["我"].append("呵")
  4. print(d) # {'我': ['呵'], '是': ['呵']}

2. 深浅拷贝

  1. = 没有创建新对象, 只是把内存地址进行了复制

    lst = [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    lst2 = lst1
    print(id(lst1)) #内存地址 931928675976
    print(id(lst2)) #内存地址 931928675976
    print(lst1) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    print(lst2) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]

    内存地址一样,就是两个列表指向同一个内存地址

  2. 浅拷贝 lst.copy() 只拷贝第一层.

    lst = [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    lst2 = lst1.copy()
    print(id(lst1)) # 内存地址652172531464
    print(id(lst2)) # 内存地址652173290568
    print(lst1) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    print(lst2) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]

    仅是内容相同,内存地址不同,只是修改表面

  3. 深拷贝

    import copy

    copy.deepcopy() 会把对象内部的所有内容进行拷贝

    import copy

    lst = [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    lst2 = copy.deepcopy(lst1)
    print(id(lst1)) # 内存地址72498038856
    print(id(lst2)) # 内存地址72495798024
    print(lst1) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]
    print(lst2) # [“篮球”, “足球”, “羽毛球”, “台球”, “网游”]

    内存地址不同,内容相同,完全复制成另一个列表

转载于:https://www.cnblogs.com/fu-1111/p/10066303.html

发表评论

表情:
评论列表 (有 0 条评论,494人围观)

还没有评论,来说两句吧...

相关阅读

    相关 深浅拷贝

    深拷贝和浅拷贝是指在赋值时或将一个变量的值复制到另一个变量时,拷贝出来的变量和原变量之间的关系。 浅拷贝就是在复制的时候,复制的只是变量的引用,而不是变量的实际值。所以如果对

    相关 深浅拷贝

    深浅copy   先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单词音译过来的,那什么是copy? copy其实就是复制一份,也就是所谓的抄一份。深浅

    相关 深浅拷贝

    转载:[详解Java中的clone方法][Java_clone]  虽然是转载,这里大概说一下自己的理解:   无论是深拷贝还是浅拷贝,只要是想让对象具有拷贝的功能

    相关 JS 深浅拷贝

    JS基本数据类型 基础数据类型按值进行访问的,可以操作保存在变量中的实际值 引用数据类型,不允许直接访问值,不能直接操作对象的内存空间,在操作对象时,实际操作

    相关 python深浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。 下面本文就通过简单的例子介绍一下这些概念之间的差别。 要想

    相关 深浅拷贝

    1. 基础数据类型补充 之前已经发过大多数的基本数据类型的知识 join()把传递进去的参数进行迭代. 获取到的每个元素和前面的\进行拼接. 得到的是字符串 spl