Python的四大内置数据结构

Posted on 2021-03-04 18:06  CodeSky&木子  阅读(285)  评论(0)    收藏  举报

1,列表

什么是列表:

列表相当于其他语言的数组。

创建列表的方法:

1,使用[]中括号,例如: li=['python','hello']

2,调用内置函数list(),例如:li=list(['python','hello'])

列表的特点:

  • 列表元素按顺序有序排序
  • 索引映射唯一数据
  • 列表可以存储重复数据
  • 任意数据类型混存
  • 根据分配和回收内存

列表的查询操作:

  • 获取列表中指定元素的索引,index()
    • 如果查询列表中有n个相同的元素,只返回第一个元素的索引
    • 如果查询的元素不存在,则抛出ValueError异常
    • 可以指定区域查找index(start,stop)
  • 获取列表中单个元素
    • 正向索引从0到N-1,逆向索引从-N到-1、
    • 指定索引不存在抛出异常
  • 获取列表中的多个元素
    • 列表名[start: stop : step ] ,切片范围[start,stop) ,step默认为1,step如果为负数就是从start开始倒序着获得元素

列表的增加操作:

  • append(),在列表的末尾增添一个元素
  • extend(),在列表的末尾增添多个元素
  • insert(),在列表的任意位置添加元素,例如:insert(1,90)
  • 切片,lit[1:]=lit3表示lit列表第一个元素之后的元素被lit3替换掉了

列表元素的删除操作:

  • remove(),一次删除一个元素,重复元素只删除第一个,元素不存在抛出异常。
  • pop(),删除一个指定索引位置上的元素,不指定索引默认抛出最后一个元素,元素不存在抛出异常
  • clear(),清空列表
  • del,删除列表

列表的修改操作:

  • 根据索引修改,例如:lit[2]=3
  • 使用切片进行多个元素修改

列表的排序操作:

  • 调用.sort()方法,默认升序排列,里面参数reverse=True,降序排列
  • 调用内置函数sorted(),会产生新的列表对象,原列表不发生改变

列表生成式:

lit=[i for i in range(1,10)]

2,字典

字典是什么:python内置的数据结构之一,是一个可变序列

​ 以键值对的方式进行存储数据,字典是一个无序的序列,和java中分map有点相似。

字典的实现原理:首先通过hash函数对键key进行计算,算出位置,再得出值,所以键key不可以重复。

字典的创建:

1,常用的方式使用 { }花括号进行创建,例如:sorces={'张三': 100,'李四': 95}

2,使用内置函数dict(),例如:dict('张三'=100,'李四'=95),左侧是键,右侧是值

字典元素的获取:

  1. []获取,例如:sorces['张三']
  2. get()获取,例如sorces.get('张三')

二者的区别:

  • []如果字典中不存在指定的key,抛出异常
  • get方法获取,如果字典中不存在指定的key,不会抛出异常,会返回None,可以通过参数设置返回的默认值。

字典的常用操作:

key的判断,判断是否存在,in或者not in,返回布尔类型

  • 字典元素的删除:del sources['张三']

字典元素的新增和修改:sources['张三']=50

获取字典视图的三个方法

  • keys():获取字典中的所有key,得到的可以转成一个列表
  • values():获取字典中所有的value,得到的可以转成一个列表
  • items():获取字典中的所有key,value对,得到的可以转换成一个列表

字典元素的遍历:

  • for item in sources :

​ print(item)

​ 只是输出的键

字典生成式:

需要用到内设置函数zip( )和两个列表

zip()内置函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。

items=[’张三‘,’李四‘,’王五‘]

prices=[100,96,97]

d={item : price for item,price in zip(items,prices)}

3,元组

什么是元组:

python内置的数据结构之一,是一个不可变序列。

元组创建方式:

  1. 使用小括号 t=('python','hello')
  2. 使用内置函数tuple(), t=tuple(('python','hello'))

注意:只包含一个元素的元组需要使用逗号,t=(10,)

元组的遍历:用for in

4,集合

什么是集合:

python语言提供的内置数据结构属于可变序列。集合是没有value的字典,底层也是采用的hashcode。

创建集合的方法;

  1. 直接{ },例如s=

  2. 使用内置函数set(),例如:

    s=set(['python','hello']) 将列表转化成集合

    s=set(('python','hello')) 将元组转化成集合

    s=set('python') 将字符串转化成集合

注意:

  • 集合中的元素不能重复。
  • 创建空集合使用内置函数创建 s=set(),如果使用花括号的话默认为空字典。

集合的相关操作:

判断是否为集合元素:in或者not in

集合元素的新增操作:

  • 调用add()方法,一次添加一个元素。
  • 调用update()方法至少添加一个元素。

集合的删除操作:

  • 调用remove()方法,一次删除一个指定元素,如果指定元素不存在就会抛出异常。
  • 调用discard()方法,一次删除一个指定元素,如果指定元素不存在不会抛出异常。
  • 调用pop()方法,一次只删除一个任意的元素。
  • 调用clear()方法,清空集合。

集合间的关系:

  • ==或者=!可以判断两个集合是否相等
  • issubset方法判断一个集合是否是另一个集合的子集,例如B是A的子集 B.issubset(A) 返回True
  • issuperset()方法判断一个集合是否是另一个集合的超集,例如A是B的超集 A.issuperset(B)返回True
  • isdisjoint方法判断两个集合是否有交集,例如 A.isdisjoint(B) 返回布尔类型

集合的数学操作:

  • 交集:A.intersection(B) 或者 A&B
  • 并集:A.union(B) 或者 A|B
  • 差集:A.difference(B) 或者 A-B
  • 对称差集:A.symmetric_difference(B) 或者 A^B

集合生成式:

s={i for i in range(10)},和列表生成式类似。