zoukankan      html  css  js  c++  java
  • 07 深浅拷贝

    基础数据类型的补充
    join() 把列表转化成字符串,是迭代的方式进行的拼接
    lst = ["alex", "dsb", "wusir", "xsb"]
    # 使用前面的字符串. 对后面的列表进行拼接,拼接的结果是一个字符串
    s = "_".join(lst)
    print(s)   ###alex_dsb_wusir_xsb
    split() 把字符串转化成列表
    lst = 'alex$dsb$wusir$xsb'
    s = lst.split('$')
    print(s)     ####['alex', 'dsb', 'wusir', 'xsb']
    列表和字典都不能再循环的时候直接删除,要把删除的内容记录在新的列表中,然后在循环这个新列表,删除列表(字典)
    最合理的删除方式:
    1,把要删除的内容写在新列表中
    2, 循环这个新列表,删除老列表
    lst = ['篮球', '排球', '足球', '电子竞技', '台球']
    new_lst = []
    for i in lst:
        if '球' in i:
            new_lst.append(i)
    for i in new_lst:
        lst.remove(i)
    print(lst)
    关于删除的具体的讲解
    st = ["篮球", "排球" ,"足球", "电子竞技", "台球"]
     
    lst.clear()
     
    for el in lst:
        lst.remove(el)
     
    print(lst) # 删不干净.原因是: 删除一个. 元素的索引要重新排列, for循环向后走一个. 差一个
     
    for i in range(len(lst)): # 0 1 2 3 4
        lst.pop(0)
    print(lst)       #[]
    lst = ["篮球", "排球" ,"足球", "电子竞技", "台球"]
    # 最合理的删除方式:
    # 1. 把要删除的内容写在新列表中.
    # 2. 循环这个新列表. 删除老列表
     
    # 需求: 删除列表中代球字的运动项目
    new_lst = []
    for el in lst:
        if "球" in el:
            new_lst.append(el) # 记录要删除的内容
     
    # 要删除的列表
    print(new_lst)
    # 循环新列表. 删除老列表
    for el in new_lst: # ['篮球', '排球', '足球', '台球']
        lst.remove(el)
     
     
     
    print(lst)
    字典
    列表和字典在被循环的时候是不能删除的.
    1,把要删除的key保存在一个新列表中,
    2,循环这个列表.删除字典中的key:vlause
    #####   坑: 大坑, 神坑   面试题:
    fromkeys()  帮我们创建字典的,  把第一个参数进行迭代. 拿到每一项作为key和后面的value组合成字典
    #坑1:   返回新字典,和原来的字典没有关系
    dic = {}
    d = dic.fromkeys('风扇哥', '很困')   ###会新建一个字典
    print(dic)  #{}
    #坑2:  如果value是可变的数据类型,那么其中的一个key对应value
    d = dict.fromkeys('胡辣汤',[])
    print(d)  #{'胡': [], '辣': [], '汤': []}
    d['胡'].append("河南特色")  ###  key 对应的是同一个列表,key变但是value不变
    print(d)   #{'胡': ['河南特色'], '辣': ['河南特色'], '汤': ['河南特色']}
    深浅拷贝
    1.=  没有创建新对象,只是把内存地址进行了复制
    从上到下只有一个列表被创建
    2.lst.copy      浅拷贝,只拷贝第一层
    copy.deepcopy()    深拷贝,对象内部的所有内容都要进行拷贝. 深度克隆.原型模式
    为什么要有深浅的拷贝?
    提高创建对象的速度,计算中最慢的,就是创建对象,需要分配内存.  最快的方式就是二进制流的形式进行复制.速度最快.
     
  • 相关阅读:
    综合疑问
    MySQL查询优化器工作原理解析
    mysql配置文件参数详解
    MySQL查看、创建和删除索引的方法
    删除maven仓库中的lastUpdate文件
    加密算法的概述
    .bat脚本基本命令语法
    spring-core中@Order和Ordered接口的源码解析说明
    spring-context中@Profile注解的源码解析说明
    spring-context中@Bean的源码解析说明和它与其他注解的结合使用
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10066241.html
Copyright © 2011-2022 走看看