
Python的基础数据结构有:列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set)等,区别联系如下:
| 数据类型 | 列表 (list) |
元祖 (tuple) |
集合 (set) |
字典 (dictionary) |
|
|---|---|---|---|---|---|
| 表示 | [] |
() |
{} |
{} |
|
| 举例 | a_list = [1, True, ‘aa’] |
a_tuple = (1, True, ‘aa’);<br> t2 = (1,)
|
a_set = {1, True, ‘aa’};<br> s = set( [1, True, ‘aa’]) |
a_dict = {‘name’: ‘xuan’, ‘age’: 21} |
|
| 是否有序 | 有序 | 有序 | 无序 | 无序 | |
| 是否读写 | 读写 | 只读 | 读写 | 读写 | 读写 |
| 空定义 | a_list = [] |
a_tuple = () |
a_set =set();<br>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相比,元祖tuple有以下特点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个元素,显示的[ ]不表示这是一个list2. 重复元素在set中自动被过滤set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作还有一种集合是 forzenset( ),是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法set和dict对比,集合set有以下特点1. set和dict的唯一区别仅在于没有存储对应的value 2. set的原理和dict一样,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素” |

二、字典dic、列表list、集合set、元祖tuple相互比较
| 比较 | 详情 |
|---|---|
字典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的元素,返回序号及其对应的元素 forx,y in list:
|
| 7 |
zip() |
打包成tuple(元组),然后返回由这些tuples组成的list(列表) |
列表[]、元组()和字符串都是序列,字符串是字符的序列,列表和元祖是任意类型的序列
注:本博主csdn同步链接
参考:
[1].python列表(list)、元祖(tuple)、集合(set),和字典(dictionary)的比较
[2].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)
[3].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)