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)

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

  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/H1050676808/p/10064545.html
Copyright © 2011-2022 走看看