• 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) # ['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]

      

  • 相关阅读:
    杭电2095--find your present (2) (异或)
    南阳168--房间安排(区间覆盖)
    南阳954--N!(数学)
    南阳--69(数的长度)
    杭电--N!(大数)
    杭电1005--Number Sequence
    杭电1108--最小公倍数
    动态规划:最长上升子序列(二分算法 nlogn)
    动态规划:最长上升子序列之基础(经典算法 n^2)
    vector函数用法
  • 原文地址:https://www.cnblogs.com/attila/p/10064940.html
Copyright © 2020-2023  润新知