Python容器浅析

1,容器介绍

2,列表

3,集合

4,字典

5,元组

 

零   Python容器的基本概念:

        python同php一样吗,是一门弱数据类型语言,也就是说,在Python中定义一个变量,他的数据类型是根据内容变化而变化的                           

        python就引入了“容器”这个概念;其中,容器是由“列表”“集合”“字典”“元组”四个基本模块组成的,这一部分内容在python中是非常重要的部分,掌握好了这几种数据结构在处理数据的时候就会很方便,但是前提条件是对这几种数据结构的特性要很了解,因为在实际编程中,最常见的工作就是将数据进行拆分和和合并,将其加工为特定的形式,而数据结构就是这种利器,就会大大提高你的代码效率和代码算法以及代码的可读性。

 

 

壹   列表

列表是python中最常用的数据类型,可以吧Python中的列表想象成c语言中的数列

创建一个列表只需要在中括号内的用逗号吧不同的数据项分隔开来就可以了

通过下标从而访问列表中的数据,和其他语言一样,从 0 开始为第一个

同一个列表中的数据项可以重复,而且可以为不同的数据类型

通过直接赋值可以更新列表中的数据项的值:

 

查看列表中可以引用的方法

>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

我们只看最后几个没有下划线的方法:

 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'

在python中可以通过 help() 函数来查看帮助文档,在学习技术这条路上学会查看英文文档自学是一个事半功倍的方法:

在这里我们看一下“append”方法的文档:(python中引用方法的语法是 ‘ 内容.方法名称 ’ )

Google翻译:   这里是说将该项数据项直接添加到列表的末尾上去;

       果然如此,看来帮助文档没有骗我们,值得信赖

 

既然学会看文档了,那我就不一一都列举文档了,下面我就总结一下列表中的所有基本方法的使用说明和效果:

  • append        在尾部追加一个新的元素
  • clear            清空容器
  • copy            浅拷贝list,一定分别出拷贝和引用传递  若是直接赋值的方法类似于Linux中的软链接,并不是拷贝了这个数据
    •   
  • count          统计元素在列表中的个数
  • index           查询元素在列表中第一次出现的下标位置   若是如果列表中不存在该元素,则抛出异常
  • insert           制定要插入的元素的位置
  • pop              通过下标移除元素,会弹出被移除的数据项    默认没有下标时删除最后一个
  • remove        移除对应的元素    注意:如果列表中不存在该元素,则抛出异常
  • reverse        翻转元素的顺序
  • sort              排序(主要针对数字)    若是字符串的话则是根据ascii码进行排序
  • extend         合并列表   等于a+b

 

 

贰   集合

集合(set)是一个无序的不重复元素序列

创建集合的时候可以用 { xx,yy,zz }或者是set()来创建;而不能直接使用{},大括号内必须夹带数据,因为直接的大括号使用来创建空字典的

 

查看集合中引用的方法:

>>> dir(a)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

看最后几个比较重要的基础的:

 'add', 'clear', 'copy', 'difference',  'discard', 'intersection', 'pop', 'remove','union'

  • 'add'    在集合的最后添加一个元素
  • 'clear'    清空集合
  • 'copy'    复制该集合,硬链接
  • 'difference'  返回多个集合的补集  
  • 'discard'    删除集合中的指定元素    若元素不存在则发生错误
  • 'intersection'    返回集合的交集
  • 'pop'    随机移除元素
  • 'remove'    删除集合中的指定元素    若元素不存不会发生错误
  • 'union'    返回两个集合的并集

 

 

叁   字典

字典是另一种可变容器模型,且可存储任意类型对象

字典的每个键值(key=>value一一对应)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中;

在字典中,键必须是唯一的,但值则不必;值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组

字典中不允许同一个键出现两次;创建时如果同一个键被赋值两次,后一个值会被记住,

创建字典:

访问字典的元素:

更新元素:

 

字典中包含了以下三个内置函数:

  • len(dict)    计算字典元素个数,即键的总数。
  • str(dict)    输出字典,以可打印的字符串表示。
  • type(variable)    返回输入的变量类型,如果变量是字典就返回字典类型。

 

字典的迭代

第一种方式:
            for k in d2:
                print(k, d2[k])

        第二种方式:
            for key in d2.keys():
                print(k, d2[k])
        第三种方式:
            for k,v in d2.items():
                print(k, v)

 

查看字典中的方法:

>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>

去最后几种常用的基础方法:

'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

  • 'clear'   清空字典
  • 'copy'   复制字典
    • ​​​​​​​
  • 'fromkeys'    用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值​​​​
    • ​​​​​​​
  • 'get'    返回指定键的值   如果值不在字典中返回默认值
    • ​​​​​​​
  • 'items'    以列表返回可遍历的(键, 值) 元组数组​​​​​​​
    • ​​​​​​​
  • 'keys'    以列表返回一个字典所有的键​​​​​​​
    • ​​​​​​​
  • 'pop'    删除字典给定键 key 及对应的值,返回值为被删除的值​​​​​​​
    • ​​​​​​​
  • 'popitem'    删除字典最后键 key 及对应的值,返回值为被删除的值
    • ​​​​​​​
  • 'setdefault'   和 get() 类似, 如果键不存在于字典中,将会添加键并将值设为默认值
    • ​​​​​​​
  • 'update'    把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里​​​​​​​
    • ​​​​​​​
  • 'values'    以列表形式返回所有键的值
    • ​​​​​​​

 

 

肆   元组

Python的元组与列表类似,不同之处在于元组的元素不能修改;

  • 关于元组是不可变的:所谓元组的不可变指的是元组所指向的内存中的内容不可变

 

元组创建很简单,只需要在小括号中添加元素,并使用逗号隔开即可;

  在变量命名中最好别使用tup来命名

 

元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用;

访问元组:    

 

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合:

 

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

 

元组中的方法:

>>> dir(tup2)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

其中常用方法只有两个:

  • 'count'    统计返回值出现的次数
  • 'index'    返回值的第一个索引。如果值不存在,则引发错误r​​​​​​
    • ​​​​​​​

 

 

 

 

 

优秀是一种加速度,而非速度

 

= =

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章