目录
Python容器定义
容器:用来存储和组织其他对象的对象。容器里面可以放很多东西,这些东西可以是字符串,可以是整数,可以是自定义类型,然后把这些东西有组织的存放在内存中
Python容器:列表(list),元祖(tuple),集合(set),字典(dict),队列(queue)等
一、列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set)区别与联系概括 ★★★★★
数据类型 | 列表 (list) | 元祖 (tuple) | 集合 (set) | 字典 (dictionary) |
---|---|---|---|---|
表示 | [] | () | () | {} |
举例 | a_list = [1, True, ‘aa’] | a_tuple = (1, True, ‘aa’); t2 = (1 , ) | a_set = {1, True, ‘aa’}; s = set( [1, True, ‘aa’]) | a_dict = {‘name’: ‘xuan’, ‘age’: 21} |
是否有序 | 有序 | 有序 | 无序 | 无序 |
是否读写 | 读写 | 只读 | 读写 | 读写 |
空定义 | a_list = [] | a_tuple = () | a_set = set(); not_sure = {}空字典 | a_dict = {} |
元素可修改 | a_list[0] = 23 | 否 | 否 | a_dict[‘age’] = 30 |
下标访问 | a_list[0] = 23 | a_tuple[0] | 否 | a_dict[‘age’] = 30 |
添加元素 | +、append、extend、insert | 不可添加 | add、update | a_dict[‘new_key’] = ‘value’ |
删除元素 | del、remove、pop()、pop(1)、clear | 不可删除 | discard、remove、pop、clear | pop、popitem、clear |
元素查找 | index、count、in | in | in | a_dict[‘key’] |
布尔真值 | 非空 | 非空 | 非空 | 非空 |
定义 | 列表(list)是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。 | tuple与list类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号,list使用方括号。 | dic字典是另一种可变的容器模型,且可存储任意类型对象。字典的每个键值(key:value)对用冒号(: )分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 | set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。 python 的集合类型和 其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们初中数学学的集合的非常的相似。 |
二、列表list -元祖-tuple- 集合set-字典dic全方位分析 ★★★☆☆
数据结构 | 表示 | 分析 |
---|---|---|
列表list | [] | 列表list,用中括号“[ ]”表示 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements)。每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现 3.可变长度,异构以及任意嵌套 列表中的元素可以是任意类型,甚至是列表类型,也就是说列表可以嵌套 4.可变的序列 支持索引、切片、合并、删除等等操作,它们都是在原处进行修改列表 5.对象引用数组 列表可以当成普通的数组,每当用到引用时,Python总是会将这个引用指向一个对象,所以程序只需处理对象的操作。当把一个对象赋给一个数据结构元素或变量名时,Python总是会存储对象的引用,而不是对象的一个拷贝 |
元祖tuple | () | 1.任意对象的有序集合 与列表相同 2.通过偏移存取 与列表相同 3.属于不可变序列类型 类似于字符串,但元组是不可变的,不支持在列表中任何原处修改操作,不支持任何方法调用 4.固定长度、异构、任意嵌套 固定长度即元组不可变,在不被拷贝的情况下长度固定,其他同列表 5.对象引用的数组 与列表相似,元祖是对象引用的数组> tuple和list相比 1.比列表操作速度快 2.对数据“写保护“ 3.可用于字符串格式化中 4.可作为字典的key |
字典dic | {} | 1.通过键而不是偏移量来读取 字典就是一个关联数组,是一个通过关键字索引的对象的集合,使用键-值(key-value)进行存储,查找速度快 2.任意对象的无序集合 字典中的项没有特定顺序,以“键”为象征 3.可变长、异构、任意嵌套 同列表,嵌套可以包含列表和其他的字典等 4.属于可变映射类型 因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值。字典是唯一内置的映射类型(键映射到值的对象) 5.对象引用表 字典存储的是对象引用,不是拷贝,和列表一样。字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以 dic和list比较,dict有以下几个特点: 1.查找和插入的速度极快,不会随着key的增加而增加 2.需要占用大量的内存,内存浪费多 而list相反: 1.查找和插入的时间随着元素的增加而增加 2.占用空间小,浪费内存很少 所以,dict是用空间来换取时间的一种方法 |
集合 | () | 1.是一组key的集合,但不存储value,并且key不能重复 创建一个set,需要提供一个list作为输入集合,s = set([1,2,3]),注意,传入的参数 [1, 2, 3] 是一个list,而显示的 set([1, 2, 3]) 只是告诉你这个set内部有1,2,3这3个元素,显示的[ ]不表示这是一个list 2.重复元素在set中自动被过滤 set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作 还有一种集合是forzenset( ),是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法 3. set和dict对比 1.set和dict的唯一区别仅在于没有存储对应的value 2.set的原理和dict一样,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素” |
三、字典-列表-集合-元祖相互PK ★★☆☆☆
比较 | 详情 |
---|---|
字典dict和列表list的比较 | dict的查找和插入的速度极快,不会随着key的增加而变慢。但是需要占用大量的内存,内存浪费多。相反,list查找和插入的时间随着元素的增加而增加。但是占用空间小,浪费内存很少。 |
字典dict和集合set比较 | 唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。 |
元祖tuple与列表list比较 | tuple与list类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号,list使用方括号。 |
四 、Python常用内置函数 ★★☆☆☆
编号 | 函数 | 注释 |
---|---|---|
1 | cmp (A, B) | 比较可为list、tuple等的A、B,A>B为1,A=B为0,小于为-1 |
2 | len (obj) | 计算元素个数。 |
3 | max (obj) | 返回元素最大值。 |
4 | min (obj) | 返回元素最小值。 |
5 | reversed (obj) | 对元素进行翻转 |
6 | enumerate (obj) | 遍历list的元素,返回序号及其对应的元素 for x,y in list: |
7 | zip () | 打包成tuple(元组),然后返回由这些tuples组成的list(列表) |
其他:列表[]、元组()和字符串都是序列,字符串是字符的序列,列表和元祖是任意类型的序列
【注】:本博主同步“简书”链接
[1].python列表(list)、元祖(tuple)、集合(set),和字典(dictionary)的比较
[2].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)
[3].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)