一、数据类型对比
元组 | 列表 | 集合 | 字典 | |
动态 | 不可变 | 可变 | 可变 | 可变 |
序列 | 有序 | 有序 | 无序 | 无序 |
异构 | 异构 | 异构 | 异构 | 异构 |
重复 | 可重复 | 可重复 | 不可重 | 不可重 |
1、动态
可变与不可变是指内存中空间是否可以被改变
当数据发生增删改时,数据的地址不发生变化时,为可变类型;
当数据发生增删改时,数据的地址发生变化时,为不可变类型。计算机会重新分配一块内存空间。
注:字典是可变数据类型。但字典的键不可变,只能改变键的值或者是将整个键值对删掉。字典的键只能使用数字、元组和字符串。
2、序列
序列:内部元素之间是否有排列顺序
有序序列支持索引和切片
3、异构
异构:可以存放不同类型的元素
注:字典中的元素均为键值对,字典的异构性在于键和值可以为不同类型的元素。
4、重复
重复:可以存在多个同样的元素
注:字典的键不可重复,值可以重复。
二、常用方法对比
元组 | 列表 | 集合 | 字典 | |
建立 | tuple() | list() | set() | dict() |
() | [] | {} | {} | |
列表推导式 | 集合推导式 | 字典推导式 | ||
增 | / | append() | add() | dict[key]=value |
extend() | update() | update() | ||
insert() | ||||
删 | / | pop() | pop() | pop() |
remove() | remove()/discard() | |||
clear() | clear() | clear() | ||
del | del | del | del | |
改 | / | list[index]=value | dict[key]=value | |
+ * | + * | & | - | ||
查 | tuple[index] | list[index] | dict[key] | |
get() | ||||
in/not in | in/not in | in/not in | in/not in | |
遍历 | 遍历 | 遍历 | 遍历 | |
index() | index() | |||
count() | count() | |||
排序 | sort() | |||
reverse() |
1、建立
- 元组、列表、集合和字典均可以使用各自的构造方法创建
- 元组、列表、集合和字典可以分别使用 ()、[]、{}、{} 创建(集合使用大括号创建时必须填充内容,不可以使用大括号创建空的集合。空的大括号是字典格式)
- 列表、集合和字典可以使用推导式创建
2、增
- 列表:append接收单个对象,extend接收一个可迭代对象,均是插入到末尾位置;insert可以指定插入位置,需要2个参数
- 集合:add接收单个对象,update接收一个可迭代对象
- 字典:update直接传入字典对象。也可以使用dict[key]=value的方式增加元素
- 返回值均为None
3、删
pop()
- 列表:删除指定索引元素或不指定的末尾元素。索引值不正确或者列表为空,引发IndexError错误
- 集合:随机删除一个元素。集合为空,引发KeyError错误
- 字典:删除指定key的键值对。key不存在于字典中,引发KeyError错误
- 返回值均是被删除元素的值
remove()
- 列表:删除指定值的元素。目标元素不存在,会报ValueError错误
- 集合:删除指定值的元素。目标元素不存在,会报KeyError错误
- 返回值均为None
discard()
- 集合:删除指定值的元素。目标元素不存在,也不会报错
- 返回值为None
clear()
- 移除所有元素,变为一个空的列表/集合/字典
- 返回值均为None
del
- 把元组/列表/集合/字典整个删除
- 无内存地址分配
4、改
- 列表和元组支持使用 + 和 * 进行组合
- 集合支持交集、并集和差集进行组合
- 列表和字典支持使用索引或者key直接改变元素值
5、查
- 元组、列表和字典支持使用索引或者key查找元素值
- 字典支持get()方法获取key对应的value值。key存在时,返回对应的value值;key不存在时,返回None,不会引发KeyError。
- 元组、列表、集合和字典均支持 in 和 not in判断元素是否存在。
- 元组、列表、集合和字典均支持使用循环进行遍历元素
- 元组和列表支持使用index()方法查看目标元素索引值,目标元素不存在,会报ValueError错误
- 元组和列表支持使用count()方法计算目标元素的数目
6、排序
- 列表支持内部元素使用sort()方法排序,默认数字按照大小排序,字符串根据字母顺序排序,也可以指定排序方法。支持key和reverse参数
- 列表支持使用reverse()方法反转内部元素,只针对索引值,元素不比较大小不进行排序