zoukankan      html  css  js  c++  java
  • python--基础数据类型的补充与深浅copy

    一 . join的用法

    复制代码
    lst =['吴彦祖','谢霆锋','刘德华']
    s = '_'.join(lst)
    print(s) # 吴彦祖_谢霆锋_刘德华
    
    # join()
    "*".join("吴彦祖") # 吴*彦*祖 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串
    split() 切割. 切割的结果是列表
    复制代码

    二 . 对正在循环的列表或者字典的删除方法

      列表和字典: 都不能在循环的时候直接删除
      把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)

    复制代码
    # 列表
    lst = ['篮球','足球','乒乓球','网球','电子竞技']
    lst_new = []
    for el in lst:
        if '球' in el:
            lst_new.append(el)
    # 把要删除的添加到新的列表里
    print(lst_new) # ['篮球', '足球', '乒乓球', '网球']
    for i in lst_new:
        lst.remove(i)  #  删除旧的列表
    print(lst) # ['电子竞技']  打印旧列表
    
    # 字典
    dic = {"张无忌":"乾坤大挪移", "周芷若":"哭", "赵敏":"卖萌"}
    # 把要删除的key保存在一个新列表中
    # 循环这个列表.删除字典中的key:value
    lst = []
    for k in dic:
        lst.append(k)
    # 循环列表
    # 删除字典中的内容
    for el in lst:
        dic.pop(el)
    print(dic)
    复制代码

    三 . 注意fromkeys()的用法

    复制代码
    # 坑: 大坑, 神坑
    # fromkeys() 帮我们创建字典用的
    # 把第一个参数进行迭代. 拿到每一项作为key和后面的value组合成字典
    d = dict.fromkeys("张无忌", "赵敏") # 创建字典
    print(d)  # {'张': '赵敏', '无': '赵敏', '忌': '赵敏'}
    
    # 坑1: 返回新字典. 和原来的字典没有关系
    dic = {}
    d = dic.fromkeys("风扇哥", "很困")
    print(dic) # {}
    print(d)  # {'风': '很困', '扇': '很困', '哥': '很困'}

    # 坑2: 如果value是可变的数据类型, # 那么其中一个key对应的value执行的更改操作. 其他的也跟着变 d = dict.fromkeys("胡辣汤", []) print(d) # {'胡': [], '辣': [], '汤': []} d['胡'].append("河南特色") print(d) # {'胡': ['河南特色'], '辣': ['河南特色'], '汤': ['河南特色']}
    复制代码

    四 . 深浅copy

    复制代码
    # = 
        没有创建新对象, 只是把内存地址进行了复制
    # 浅拷贝 
        lst.copy() 只拷贝第一层.
    # 深拷贝
        import copy
        copy.deepcopy() 会把对象内部的所有内容进行拷贝
    复制代码

      浅copy

    复制代码
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容
    print(lst1) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
    print(lst2) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
    lst1[4].append("葫芦娃")
    print(lst1) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼', '葫芦娃']]
    print(lst2) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼', '葫芦娃']]
    复制代码

      深copy

    复制代码
    # 引入一个模块
    import copy
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = copy.deepcopy(lst1) # 深拷贝: 对象内部的所有内容都要复制一份. 深度克隆(clone). 原型模式
    
    print(lst1) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
    print(lst2) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
    
    lst1[4].append("葫芦娃")
    print(lst1) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼', '葫芦娃']]
    print(lst2) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
    复制代码
  • 相关阅读:
    分享一道关于类、实例加载和初始化顺序的基础面试题
    IDEA部署 java Web项目 常见配置
    jsp和servlet开发过程中参数传递乱码问题总结
    Java String引起的常量池、String类型传参、“==”、“equals”、“hashCode”问题 细节分析
    利用反射创建实例强制转换为接口失败小结
    oracle与sqlserver的十大区别
    js闭包的用途 【转】
    实体框架EF笔记
    利用存储过程进行分页
    关于ASP.NET运行机制原理。。。个人总结
  • 原文地址:https://www.cnblogs.com/uiys/p/10673121.html
Copyright © 2011-2022 走看看