Welcome!!!

F

伞兵一号,申请出战

数据类型内置方法(三)

数据类型内置方法(三)

字典的内置方法

  1. 类型转换

    1. 字典的定义
    方式一:
        dict1 = {'name':'petter','age':18}
    方式二:
        dict1 = dict(name = 'petter', age = 18)
    2. 类型转换(以后多数是直接定义字典,用到转换的非常少)
    用法一:
        dict1 = dict([['name','petter'],('age',18)])
        print(dict1)
        运行结果:
            {'name': 'petter', 'age': 18}
    用法二:fromkeys方法
        print(dict.fromkeys([11, 22, 33]))
    	print(dict.fromkeys([11, 22, 33],99))
        运行结果:
            {11: None, 22: None, 33: None}
    	    {11: 99, 22: 99, 33: 99}
        # fromkeys(参数1,参数2),以参数1的每个元素为新字典的key,参数2为新字典每个key对应的value,不写默认为None,参数1必须是可以for循环的数据类型,参数2可以是任意数据类型    
    
  2. 常用方法

    dict1 = {'name': 'petter', 'age': '18','hobby':['eat','sleep']}
    # 1. 按key取值
    # 方式一:
    # print(dict1['name'])
    # >>>petter
    # 缺点:当key不存在时,会直接报错
    # 方式二:
    # print(dict1.get('name'))
    # print(dict1.get('oscar'))
    # print(dict1.get('oscar', '这个key不存在'))
    # >>>petter
    # >>>None
    # >>>这个key不存在
    # 推荐使用这种方式,即使key不存在,也不会报错,导致程序停止,且可以自己定义提示语句,当key不存在时,默认输出None,如果定义提示语句,则会输出提示语句
    ======================================================
    # 2.修改值  字典也是可变类型
    # dict1['name'] = 'oscar'  # 直接根据key修改value即可
    # print(dict1)
    # >>>{'name': 'oscar', 'age': '18', 'hobby': ['eat', 'sleep']}
    ======================================================
    # 3. 添加键值对
    # dict1['heiget'] = 185  # 键不存在则是新增一个键值对
    # print(dict1)
    # >>>{'name': 'petter', 'age': '18', 'hobby': ['eat', 'sleep'], 'heiget': 185}
    ======================================================
    # 4.统计字典中键值对的个数
    # print(len(dict1))
    # >>>3
    ======================================================
    # 5.成员运算  
    # print('name' in dict1)
    # print('petter' in dict1) 
    # >>>True
    # >>>False  # 只能判断key是否是成员变量
    ======================================================
    # 6.删除键值对
    # 方式一:(根据索引key删除整个键值对)
    # del dict1['name']
    # print(dict1)
    # >>>{'age': '18', 'hobby': ['eat', 'sleep']}
    # 方式二:(根据索引key弹出键值对)
    # print(dict1.pop('name'))
    # print(dict1)
    # >>>petter  # 弹出name对应的value值petter
    # >>>{'age': '18', 'hobby': ['eat', 'sleep']}
    # 方式三:(随机弹出,用的非常少)
    # print(dict1.popitem())
    # print(dict1)
    # >>>('hobby', ['eat', 'sleep']) #随机弹出一个键值对,而不是value
    # >>>{'name': 'petter', 'age': '18'}
    ======================================================
    # 7. 获取所有的键 所有的值 所有的键值对
    # print(dict1.keys())  # 获取所有key,返回值可以看成列表
    # print(dict1.values())  # 获取所有value,返回值可以看成列表
    # print(dict1.items())  # 获取所有键值对,返回值可以看成列表套元组
    # >>>dict_keys(['name', 'age', 'hobby'])
    # >>>dict_values(['petter', '18', ['eat', 'sleep']])
    # >>>dict_items([('name', 'petter'), ('age', '18'), ('hobby', ['eat', 'sleep'])])
    # 原理:
    	# 循环遍历字典,取出每一个key或者value,或者整个键值对
    """在python2中上述三个方法就是直接返回一个列表 """
    ======================================================
    
  3. 需要了解的操作

    dict1 = {'name': 'petter', 'age': '18','hobby':['eat','sleep']}
    # 1. update更新字典
    # dict1.update({'name':'oscar','age':19,'height':185})
    # print(dict1)
    # >>>{'name': 'oscar', 'age': 19, 'hobby': ['eat', 'sleep'], 'height': 185} 
    # 当key存在时,更新value,当key不存在时,新建键值对
    ======================================================
    # 2.fromkeys()快速生成字典(很少用到)
    # dict2 = dict.fromkeys([1,2,3],[])
    # print(dict2)
    # >>>{1: [], 2: [], 3: []}
    """面试题"""
    # dic['k1'].append(111)  # 三个键指向的是同一个列表,append是给整个字典赋值,所有的key都指向同一个value
    # print(dic)  
    # >>>{'k1': [111], 'k2': [111], 'k3': [111]}
    ======================================================
    # 3.setdefault()
    # print(dict1.setdefault('height', 185))  # 键不存在则新增键值对 并且有返回结果是新增的v
    # >>>185
    # print(dic.setdefault('name', 'oscar'))  # 键存在 则返回对应的值 不做修改
    # print(dict1)
    # >>>petter
    # >>>{'name': 'petter', 'age': '18', 'hobby': ['eat', 'sleep']}
    

元组内置方法

  1. 类型转换
# 元组可以看成不可变的列表
'''支持for循环的数据类型都可以转成元组'''
    # print(tuple(11))  # 报错
    # print(tuple(11.11))  # 报错
    print(tuple('jason'))
    print(tuple([11,22,33,44]))
    print(tuple({'name':'jason'}))
    print(tuple({11,22,33,44}))
    # print(tuple(True))  # 报错
  1. 元组的特性

    当元组内只有一个值时,一定要在值后加个逗号,不然整个元组会被系统识别为该值的数据类型
    eg:
        t1 = (11, 22)
        t2 = (11)
        t3 = (11,)
        print(type(t1))
        print(type(t2))
        print(type(t3))
    运行结果:
        <class 'tuple'>
        <class 'int'>
        <class 'tuple'>
    """
    一般情况下 我们会习惯性的将所有可以存储多个数据的类型的数据
    如果内部只有一个元素 也会加逗号
        (1,)
        [1,]
        {1,}
        {'name':'jason',}
    """
    
  2. 常用方法

    t1 = (11, 22, 33, 44, 55, 66)
    # 1. 索引取值
    # t1 = (11, 22, 33, 44, 55, 66)
    # print(t1[0])
    # >>>11
    # >>>66
    ======================================================
    # 2. 切片,步长[起点:终点:步长]
    # print(t1[0:3])
    # print(t1[0:3:2])
    # print(t1[-5:-1:2])
    # >>>(11, 22, 33)
    # >>>(11, 33)
    # >>>(22, 44)
    ======================================================
    # 3. 统计元组内元素的个数
    # print(len(t1))  
    # >>>6
    ======================================================
    # 4. 成员运算
    # print(11 in t1)
    # print(88 in t1)
    # >>>True
    # >>>False
    ======================================================
    # 5.统计某个元素出现的次数
    # print(t1.count(22))
    # >>>1
    ======================================================
    # 7.元组内元素不能"修改": 元组内各个索引值指向的内存地址不能修改
    # t1[0] = 111 #报错
    """
    笔试题
        tt = (11, 22, 33, [11, 22])
        tt[-1].append('heiheihei')
        问:执行之后的结果   正确答案选B
            A.报错    B.正常添加   C.不知道 
    ### tt[-1] == [11,22],列表添加元素当然可以添加 ###
    """
    

集合内置方法

  1. 类型转换

    # print(set(11))  # 报错
    # print(set(11.11))  # 报错
    # print(set('jason'))
    # print(set([11,22,33,44]))
    # print(set({'name':'jason'}))
    # print(set((11,22,33)))
    # print(set(True))  # 报错
    """集合内元素只能是不可变类型"""
    
  2. 两大功能

    1. 去重
    	集合内不能出现重复的元素(自带去重特性)
        如果出现了 会被集合自动去重
        eg:
            s1 = {1,1,5,6,4,8,8,4,6,4,7}
            print(s1)
        运行结果:
            {1, 4, 5, 6, 7, 8}
    2. 关系运算
    	判断两个群体内的差异	
        	eg:共同好友 共同关注 共同点赞
    # 关系运算
    f1 = {'jason', 'kevin', 'tony', 'jerry'}  # 小李的好友列表
    f2 = {'jason', 'tom', 'jerry', 'jack'}  # 小王的好友列表
    # 1.求两个人的共同好友
    # print(f1 & f2)  # {'jerry', 'jason'}
    # 2.求小李的单独好友
    # print(f1 - f2)  # {'kevin', 'tony'}
    # 3.求两个人所有的好友
    # print(f1 | f2)  # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'}
    # 4.求两个人各自的好友
    print(f1 ^ f2)  # {'jack', 'tony', 'tom', 'kevin'}
    

垃圾回收机制

"""python底层针对空间的申请和释放都是设计好的 不需要程序员操心"""
1. 引用计数
	一个变量被一个变量名指向时,他的引用计数就是1,被两个变量名指向就是2,当没有变量名指向变量时,这个变量的引用计数就是0,Python会将其清除
2. 标记清除
	当内存空间即将溢出时,Python会自动启动应急机制,停止程序运行,挨个检查引用计数为0的数据并打上标记,然后一次清除
3. 分代回收
	根据数据存在时间长短,将值换分成三个等级
    	存在时间短的数据 监测机制检测的时间间隔越短
        存在时间长的数据 监测机制检测的时间间隔越长

posted @   程序猿伞兵一号  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示