Python容器数据类型、操作、比较

本文详细介绍了Python中的四种主要容器数据类型:列表、元组、字典和集合。列表是一个有序集合,支持增、删、改、查操作;元组是不可变的列表,仅支持查找操作;字典是键值对存储,提供快速查找,键必须是不可变类型;集合是无序且不重复的元素集合,常用于去重。文章还探讨了这些容器的特性比较,如查找速度、内存占用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合容器


    1、列表:


        1、特征


            1、列表是一个有序集合,所有元素按照先后顺序排序。即:先进来的站在最前头
            2、列表可以有 增、删、查、改 的操作
            3、列表可以对元素分配下标(索引、位置)
            4、列表可以存储任何类型的数据或容器
            5、定义列表:变量名=[值1,值2,值3,...,值n]
            6、定义空列表:变量名=[]


        2、列表--增:


            1、列表.append(值)
                将括号中的值加入到列表末尾
            2、列表.insert(下标,值)
                在指定下标处,插入值,前面元素不变,后面元素依次后移
            3、列表.extend(列表)
                合并列表,将括号中的列表添加到列表中,按序添加


        3、列表--改:


            1、列表[下标]=值

            2、列表[切片]=值 (这种操作会将指定的列表片段更换我指定的值,但是赋值号邮编必须是一个可迭代对象,并且切片长度可以和可迭代对象的长度不一致,因此,这种操作也有可能改变列表的长度)


        4、列表--删:


            1、列表pop()
                删除末尾元素,并返回此值,
            2、列表pop(下标)
                根据下标删除,并返回此值
            3、del 列表[下标]
                根据元素下标删除,无返回值
            4、列表.clear()
                清空列表


        5、列表--查


            1、列表[下标]
                根据下标查找值,引用该值
            2、列表.index(值)
                根据值查找其在列表中的位置(下标),并返回该下标,若有多个该值,则返回第一个索引
            3、列表.count(值)
                统计该值在列表中出现的次数并改回统计结果
            4、len(列表)
                计算列表长度,并返回该长度值
            5、max(列表)、min(列表)
                查询列表最大值、最小值,并返回该值
                但列表中的值必须是同类型的数据,例如:都是数字,或者都是字母,或者都是列表或者都是元组


        6、列表--判断


            1、in
            2、not in
            判断元素是否存在于列表中


        7、列表--脚本操作


            1、重复列表  * 、+
                +表示将两个列表组合成一个列表
                *表示将一个列表中的元素重复多次


        8、列表--排序


            1、列表.reverse()
                反转列表元素,对原列表直接操作,返回空值
            2、列表.sort()
                对原列表进行由小到大排序,属于直接操作,返回空值
            3、sorted(列表)
                对参数列表进行排序,原列表不会变化,会返回一个排序后的新列表


        9、列表--切片


            1、列表[num1:num2:num3]
                num1 表示起始位置,num2 表示终止位置,num3 表示步长
                默认值:num1 = 0 num2 =列表长度,num3 = 1 
                num2 位置元素不会包含在内


        10、列表--遍历


            1、while 循环使用下标遍历
            2、for 迭代循环遍历


    2、元组:


        1、元组是一个有序容器,可按下标查找值
        2、元组=操作受限的列表。元组不可增、删、改。但可以查找。


    3、列表<-->元组:


        1、列表=list(元组)
        2、元组=tuple(列表)
        3、以上两种操作都是返回一个新的列表、元组,并不会改变原来的 ,实现列表,元组之间的相互转换。


    3、字典:


        1、使用大括号括起来,使用键值对进行存储
        2、具有极快的查找速度
        3、只能根据 键 查找对应的 值
        4、定义空字典:a={}
        5、定义字典:a={key1:value1,key2:value2,key3:value3,....,keyn:valuen}
        6、键 (key)必须是不可变类型:如字符串,数字,元组。
        7、键 必须是唯一的,不可以重复
        8、值可以是任意类型的数据或容器
        9、键值对的存储顺序是无序的,即:存放顺序与放入顺序是没有关系的
        


        1、字典--增/改


            1、字典[键]=值
                1、若字典里已经有该键值,则会将原有的覆盖,即实现了字典的修改
                2、若字典里没有该键,则会添加改键并赋值


            2、字典--删


                1、字典.pop(键)
                    将该键对应的值删除并返回该值
                2、del 字典[键]
                    根据键删除值,返回空类型(无返回值)
                3、字典.popitem()
                    随机删除一个
                4、字典.clear()
                    清空字典


            3、字典--查


                1、字典[键]
                    根据键查找值,并返回
                2、字典.get(键,[默认值])
                    通过字典中的 get 方法查找对应的键值,如果没有该键值则返回None或者自己设置的默认值
                3、len(字典)
                    求字典长度,一个键值对占据一个长度
                4、str(字典)
                    字典转化为字符串显示
                5、dict.keys()
                    把字典中的所有键值,收集为一个列表并改回该列表,但该列表类型为:class'dict_keys',和 list 类型不一样
                5、dict.values()
                    把字典中的所有值,收集为一个列表并返回该列表,但其类型为:class'dict_values'
                5、dict.items()
                    把字典中的所有键值对,收集为一个列表并返回该列表,但其类型为:class'dict_items'
                6、以上三中类型是字典中的内置函数,返回的数据并不是严格意义上的列表,因为返回的数据无法使用列表的内置方法


            4、字典--判断


                1、in
                2、not in
                3、判断字典键、值或者键值对是否在字典中   A in dict


            5、字典--遍历


                1、for key in dict.keys():
                    print('%s-->%s'%(key,dict[key]))
                    通过遍历键,遍历字典
                2、for key in dict():
                    print('%s-->%s'%(key,dict[key]))
                3、for k,v in dict.items():
                    print('%S-->%S'%(k,v))


            6、字典--其他


                1、dict,copy()
                    返回一个复制的字典,内容一样,地址不同
                2、dict.fromkeys(seq,[,values])
                    以 seq 序列中的元素作为键,values为值,创建一个新的列表
                3、dict.setdefault(key,default=None)
                    和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default 如果键在字典中,返回这个键所对应的值。
                    如果键不在字典中,向字典中插入这个键,并且以default为这个键的值,并返回 default。default的默认值为None
                4、dict.update(dict2)
                    把 dict2 中的键值对更新至 dict 中。
                    相当于列表中的 extend 函数


        4、集合


            1、set是一个无序,不能重复的集合容器,所以可以用来过滤重复元素。
            2、定义空集和:a=set()    (注意不是 {} ,若是 a={} 则是创建空字典
            3、定义集合:a={值1,值2,....,值n}
            
            4、集合中不能存储不能进行哈希计算的数据类型。如 列表、字典、甚至集合都不能存放在集合中
            5、可进行哈希运算的数据类型才可以存储在集合中。如 数值型、字符串、布尔类型、空值类型、元组
            


            1、集合--增


                1、set.add(值)
                    向集合中添加一个元素
                2、set.update(值)
                    将一个可迭代的内容,一一加入,例如列表、元组、字典、集合、字符串
                    注意:如果添加字典,则只会将 键 添加进去。
                        若果是字符串,则会将每一个字符逐个加入


            2、集合--删


                1、set.remove(值)
                    移除指定的值。若值不存在,会报错
                2、set.discard(值)
                    同上,但值不存在不会报错
                3、set.pop()
                    随机删除一个
                4、set.clear()
                    清空集合


            3、set--集合操作


                1、并集:|
                2、交集:&   intersection
                3、差集:-    different
                4、判断:in
                5、联合:union    例如;A.union(B) 合并A,B 并返回合并后的集合
                6、子集:issubset    例如:A.issubset(B)   A是B的子集,返回布尔值
                7、父集:issuperset        例如:A.issuperset(B)   A是B的父级,返回布尔值
        


        5、容器特性比较

 


            1、列表--字典:


                1、列表查找速度随着元素的增多而增多,而字典以键查找值,查找速度极快
                2、列表占用内存较小,而字典则占用较大内存(以空间换时间)


            2、列表--元组


                1、元组是被“束缚”着的列表
                2、列表能进行的元素修改、增删操作都无法在元组上实现
                3、二者都可以用下标查找元素
            

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值