zoukankan      html  css  js  c++  java
  • 基本数据类型补充 jion fromkeys 深浅拷贝

     

    基本数据类型

    int整数    str字符串   bool布尔值   list列表   tuple元组    dict字典   set集合   bytes字节 

    其他操作 

    join()

    "*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串
    split() 切割. 切割的结果是列表

    lst = ["alex", "dsb", "wusir", "xsb"]
    # 使用前面的字符串. 对后面的列表进行拼接,拼接的结果是一个字符串
    s = "_".join(lst)
    print(s)
    # alex_dsb_wusir_xsb

     

    # split() 根据你给的参数进行切割, 切割的结果是列表
    s = "alex_dsb_wusir_xsb"
    lst = s.split("_") # 列表
    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)

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

    fromkeys()
    坑1: 返回新字典. 不会更改老字典
    坑2: 当value是可变的数据类型. 各个key共享同一个可变的数据类型. 其中一个被改变了. 其他都跟着变

    深浅拷贝

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

    # 从上到下只有一个列表被创建
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
    lst2 = lst1  # 并没有产生新对象. 只是一个指向(内存地址)的赋值
    print(id(lst1))
    print(id(lst2))
    
    lst1.append("葫芦娃")
    print(lst1)
    print(lst2)
    

      

    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
    lst2 = lst1.copy()  # 拷贝, 抄作业, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝
    
    print(id(lst1))
    print(id(lst2))
    
    lst1.append("葫芦娃")
    print(lst1)
    print(lst2)
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容
    
    print(id(lst1))
    print(id(lst2))
    
    print(lst1)
    print(lst2)
    
    lst1[4].append("葫芦娃")
    print(lst1)
    print(lst2)
    # 引入一个模块
    import copy
    
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = copy.deepcopy(lst1) # 深拷贝: 对象内部的所有内容都要复制一份. 深度克隆(clone). 原型模式
    
    print(id(lst1))
    print(id(lst2))
    
    print(lst1)
    print(lst2)
    
    lst1[4].append("葫芦娃")
    print(lst1)
    print(lst2)

    # 为什么要有深浅拷贝?
    # 提高创建对象的速度
    # 计算机中最慢的. 就是创建对象. 需要分配内存.
    # 最快的方式就是二进制流的形式进行复制. 速度最快.

  • 相关阅读:
    剑指OFFER之合并有序链表(九度OJ1519)
    剑指OFFER之反转链表(九度OJ1518)
    剑指OFFER之链表中倒数第k个节点(九度OJ1517)
    一分钟教你在博客园中制作自己的动态云球形标签页
    剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
    剑指OFFER之打印1到最大的N位数(九度OJ1515)
    剑指OFFER之矩形覆盖(九度OJ1390)
    剑指OFFER之数值的整数次方(九度OJ1514)
    剑指OFFER之变态跳台阶(九度OJ1389)
    剑指OFFER之二进制中1的个数(九度OJ1513)
  • 原文地址:https://www.cnblogs.com/H1050676808/p/10064545.html
Copyright © 2011-2022 走看看