Python学习笔记:day06 数据类型(集合)& 内存相关

day06数据类型(四)

今日内容

  • 集合
  • 内存相关
  • 深浅拷贝

内容回顾 & 补充

  1. 内容回顾

  2. 补充

    • 列表

      • reverse,反转

        v1 = [1,2,311,32,13]
        print(v1)
        v1.reverse()
        print(v1)
        
      • sort排序

        # v1.sort(reverse=False) #从小到大(默认)
        v1.sort(reverse=True) #从大到小
        print(v1)
        
    • 字典

      • key/values/items

      • get

        info = {'k1':'v1','k2':'v2'}
        # print(info['k1111'])
        # v2 = info.get('k1111')
        # print(v2)  #返回None
        # v3 = info.get('k1111',666)
        # print(v3) #返回666
        
        result = info.get('k111')
        print(result)
        if result == None:
            print('不存在')
        
        if result:
            print('存在')
        else:
            print('不存在')
        
         #None数据类型,改类型表示空(无任何功能,专门提供空值)
        
      • pop

        # info = {'k1':'v1','k2':'v2'}
        # result = info.pop('k2')
        # print(info,result)
        #
        # del info['k1']
        
      • update

        nfo = {'k1':'v1','k2':'v2'}
        info['k3'] = 'v4'
        #不存在则添加,存在则替换
        info.update({'k3':'v3','k4':'v4'})
        print(info)
        
    • 判断一个字符串是否有敏感字符?

      • str

        v = "Python全栈21期"
        if "全栈" in v:
            print('含敏感字符')
        
      • list/tuple

        v = ['alex','oldboy','高老四','利奇航']
        if '利奇航' in v:
            print('含敏感')
        
      • dict

        v = {'k1':'v1','k2':'v2','k3':'v3'}
        #默认按照键判断,即:判断x是否是字典的键
        if 'x' in v:
            pass
        
        #请判断:k1是否在其中?
        if k1 in v:
            pass
        #请判断:v2是否在其中?
        #方式一:循环判断
        flag = '不存在'
        for v in v.values():
            if v == v2:
                flag = '存在'
         print(flag)
        
        #方式二:
        #list(v.values()) #强制转换成列表['v1','v2','v3']
        for 'v2' in list(v.values):
            pass
        
        #请判断:k2:v2是否在其中?
        value = v.get('k2')
        if value == 'v2':
            print('存在')
        else:
            print('不存在')
        
      • 练习题

        #让用户输入任意字符串,然后判断此字符串是否包含指定的敏感字符
        char_list = ['利奇航','倘有光','炸掉四']
        content = input('请输入内容:')  #我叫利奇航 / 我叫倘有光 / 我叫炸掉四
        success = True
        for v in char_list:
            if v in content:
                
                sucess = False
                break
        if success:
            print(content)
        else:
            print('包含敏感字符')
            
        #示例:
        # 1.昨天上课最后一题
        # 2.判断'v2'是否在字典的value中 v = {'k1':'v1','k2':v2}
        # 3.敏感字
        
        

内容详细

1.集合set

  • 无序
  • 不重复
v = {1,2,3,4,5,6,99,100}

#疑问:v = {}
#1.空集合
# v = {}  #空字典
# v1 = set()
# print(type(v1))
'''
None
int
    v1 = 123
    v1 = int() -> 0
bool
    v2 = True/False
    v2 = bool()  -> False
str
    v3 = ""
    v3 = str()
list
    v4 = []
    v4 = list()
tupe
    v5 = ()
    v5 = tuple()
dict
    v6 = {}
    v6 = dict()
set
    v7 = set()
'''
  1. 集合的独有功能

    • add
    • discard
    • update
    • intersection
    • union
    • difference
    • symmetric_difference
  2. 公共功能

    • len

      v = {1,2,'lishaoqi'}
      print(len(v))
      
    • for循环

      v = {1,2,'lishaoqi'}
      for item in v:
          print(item)
      
    • 索引【无】

    • 步长【无】

    • 切片【无】

    • 删除【无】

    • 修改【无】

  3. 嵌套

    #1.列表/字典/集合 ->不能放在集合中+不能作为字典的key()
    # info = {1,2,3,4,True,"国风",None,(1,2,3)}
    # print(info)
    #2. hash -> 哈希是怎么回事?
    #因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找
    #3.特殊情况
    # info = {
    #     1:'alex',
    #     True:'oldboy'
    # }
    # print(info)  #{1: 'oldboy'}
    

2.内存相关

  • 示例一:

    v1 = [11,22,33]
    v2 = [11,22,33]
    
    v1 = 666
    v2 = 666
    
    v1 = 'asdf'
    v2 = 'asdf'
    #按理 v1和v2应该是不同的内存地址,但python中具有小数据池缓存功能,特殊:
    	1.整型:-5 ~ 256
        2.字符串:'alex','sefsdfe','weaff','wef_wef'   ```"f*"3 重新开辟内存
    

Python学习笔记:day06 数据类型(集合)& 内存相关

  • 示例二:再开辟一个内存空间

    v1 = [11,22,33,44]
    v1 = [11,22,33]
    
  • 示例三:指向同一个内存地址

    v1 = [11,22,33]
    v2 = v1
    
    #练习1(内部修改)
    v1 = [11,22,33]
    v2 = v1
    v1.append(666) #内部修改
    print(v2)  #[11, 22, 33, 666]
    
    #练习2(赋值)
    v1 = [11,22,33]
    v2 = v1
    v1 = [1,2,3,4]   #赋值
    print(v2) #[11, 22, 33]
    
    #练习3:(重新赋值)
    v1 = 'alex'
    v2 = v1
    v1 = 'oldboy'
    print(v2)  #alex
    
  • 示例四

    v = [1,2,3]
    values = [11,22,v]
    
    #练习1:
    v.append(9)
    print(values) #[11,22,[1,2,3,9]]
    
    #练习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)  #[1,2,3]
    
  • 示例五

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

    # v1 = [1,2,3]
    # v2 = [1,2,3]
    # v3 = v2
    # print(id(v1),id(v2),id(v3))
    
    '''
    v1 = [1,2,3]
    v2 = v1
    print(id(v1),id(v2))
    v1 = 999
    print(id(v1),id(v2))
    '''
    
  • 问题: == 和 is 有什么区别?

    • ==用于比较值是否相等

    • is用于比较内存地址是否相等

      Python学习笔记:day06 数据类型(集合)& 内存相关

总结

  • 列表
    • reverse
    • sort
  • 字典
    • get
    • update
  • 集合
    • add
    • discard
    • update
    • intersection
    • union
    • difference
    • symmetric_difference
  • 特殊
    • 嵌套:集合/字典的key
    • 空:None
    • 空集合
  • id
  • type
  • 嵌套的应用
    • 赋值
    • 修改内部元素:列表/字典/集合
上一篇:springmvc中Controller前端控制器的映射与返回数据,以及异常处理


下一篇:最优贸易