• Python基础知识(day6)


    day6

    今日内容

    • 集合

    • 内存相关

    • 深浅拷贝

    内容补充

    1. 列表

      • reverse反转

      • sort排序

        # 反转
        v1 = [1,2,3,4,5]
        print(v1)
        v1.reverse()
        print(v1)
        # 排序
        v1.sort(reverse=False) # 默认从小到大
        print(v1)
        v1.sort(reverse=True) # 从大到小
        print(v1) 
        
    2. 字典

      • keys/values/intems

      • get方法

        # 字典补充,get方法
        info = {"llk": "hkq"}
        # print(info["llk"])
        v2 = info.get("llk", 666) # 不存在key-value时,返回666,不填的话返回NULL
        print(v2)
        
      • update

      • pop

    内容详细

    1. 集合set

      • 无序
      • 无重复
      v = {1,2,3,4,5}
      # 集合set
      v = {1,2,3,4}
      print(v)
      
      # 空集合/空字典
      v1 = {} # 空字典
      print(type(v1))
      
      v2 = set() # 空集合
      print(type(v2))
      
    2. 集合独有功能

      # 独有功能
      # add添加
      v = {1,2}
      v.add('li')
      print(v)
      
      # discard删除
      v = {1,2,3}
      v.discard(2)
      print(v)
      
      # update 批量更新
      v = {1,2,3}
      v.update({11,22,33})
      print(v)
      
      # intersection交集
      v = {1,2,3}
      v2 = v.intersection({1,6,7})
      print(v2)
      
      # union并集
      v = {1,2,3}
      v3 = v.union({3,45,6})
      print(v3)
      
      # difference差集
      v = {1,2,3,4}
      v4 = v.difference({1,2})
      print(v4)
      
    3. 集合公共功能

      • len

        # len
        v = {1,2,3,4}
        print(len(v))
        
      • for循环

        # for循环
        v = {1,2,3,4,5}
        for item in v:
            print(item)
        
      • 索引【无】

      • 步长【无】

      • 切片【无】

      • 删除【无】

      • 修改【无】

    4. 集合嵌套问题

      • ps:集合内元素不可变,需要转换为哈希值
      • 因为以哈希表方式存储,查询速度非常快
      • 字典存为哈希值时,只有key转为哈希值
      # 集合嵌套 列表/字典/集合-->不能放在集合中+不能作为字典的key(unhashable)
      info = {1,2,"li",True,None,(1,2)}
      print(info)
      

    内存相关

    • 示例一

      # 值相同,开辟内存不同
      v1 = {1,2,3}
      v2 = {1,2,3}
      
      v1 = 666
      v2 = 666
      
      v1 = "llk"
      v2 = "llk"
      # 按理v1和v2 是不同的内存地址,特殊:
      1. 整形: -5 ~ 256 加缓存,不会开辟内存
      2. 字符串:"alex" "llk" --会加缓存,不会开辟内存
      "f_*" * 3 -会重新开辟内存
      
    • 示例二

      # 开辟了两个内存,变量v1前面指向的额内存成为垃圾,等待回收
      v1 = {1,2}
      v1 = {2,3}
      
      
    • 示例三

      # v1开辟内存,v2也指向v1开辟的内存,v1修改值后,v2也被修改,本质是v1和v2指向同一个内存空间
      v1 = {1,2,3}
      v2 = v1
      v1.append(666)
      print (v2) # 含666
      
      # 练习2
      v1 = {1,2,3}
      v2 = v1
      v1 = {2,3,4}
      print (v2) # v2 = {1,2,3}内存指向未改变
      
      #练习3
      v1 = 'llk'
      v2 = v1
      v1 = 'kll'
      print (v2) # v2 = 'llk'
      
      
    • 示例四

      v = [1,2,3]
      values = [11,22,v]
      # 练习1
      v.append(8)
      print (values) # [11,22,[1,2,3,8]
      
      # 练习2
      values[2].append(999)
      print (v) # [1,2,3,999]
      
      #练习3
      v = 999
      print(values) # [11,22,[1,2,3]
      
      #练习4
      values[2] = 666
      print(v) #[11,22,[1,2,3]]
      
      
    • 示例五

      v1 = [1,2]
      v2 = [2,3]
      v2 =[11,22,v1,v2,v1]
      
    • 查看内存地址

      v1 = [1,2,3]
      v2 = v1
      print(id(v1),id(v2))
      v1 = 999
      print(id(v1),id(v2))
      
    • python 把常用的数字和字符串加入缓存,内存是一致的

    • 问题: == 和 is有什么区别

      • == 比较值是否相等
      • is比较内存是否相等
  • 相关阅读:
    JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
    An internal error occurred during: "Launching New_configuration"
    Android 创建虚拟机时“提示no system images installed for this target”
    [转] 传说中的WCF(2):服务协定的那些事儿
    [转] 传说中的WCF
    python的包管理
    python入门常用方法(转json,模拟浏览器请求头,写入文件)
    python读写数据篇
    python跳坑手记
    python爬虫入门篇
  • 原文地址:https://www.cnblogs.com/lilangkui/p/12495217.html
Copyright © 2020-2023  润新知