1. 组合数据类型概述
组合数据类型:包含一组数据且作为单一管理结构的数据类型
- 顺序性:一组数据以无序或有序方式组织
- 一致性:一组数据以相同或不同的类型组织
- 索引性:一组数据能否以及采用序号或自定义索引方式组织
Python组合数据类型:3大类7小类
- 集合(无序、非一致、无索引):可变集合(set)、不可变集合(frozenset)
- 序列(有序、非一致/一致、序号索引):元组、列表、字符串、字节串
- 字典(无序、非一致、自定义索引):字典
可变类型与不可变类型
- 可变类型:创建后值可以改变的类型,如:列表、字典等
- 不可变类型:创建后值不可以改变的类型,如:数值类型、字符/字节串、元组等。
可哈希性和hash()函数
- hash(x)函数返回x的一个哈希值
- 并不是所有类型都可以被哈希,不可变类型可以被哈希,例如数值类型、字符串、元组等
- 列表和字典等可变类型不能被计算哈希值
2. 集合类型
集合类型:一组数据的集合
- 无序:元素间没有顺序,因此要求元素不能相同,元素必须是不可变类型
- 非一致:元素类型可以不同
- 无索引:不能对某个元素进行定点索引,可以遍历或随机获取元素
可变集合类型、不可变集合类型
- 可变集合类型set():集合元素的个数可以不断增加或减少
- 不可变集合类型frozenset():集合创建后不可改变
A = {
"c","s",123}
B = set("cscs123")
A - B
{123}
B - A
{'1', '2', '3'}
A = frozenset("cs123")
A
frozenset({'1', '2', '3', 'c', 's'})
3. 序列类型
3.1 序列类型基础
序列类型:一组数据的有序组合
- 有序:元素间存在顺序,因此,可以存在值相同的多个元素
- 非一致:元组和列表中元素类型可以不同
- 一致:字符串和字节串中元素类型必须相同
- 序号索引:采用正向递增或反向递减方式索引,根据序号精确访问单个元素
3.2 元组类型基础
元组类型:创建后一般不能被修改的序列类型
a = tuple("cscs101")
a
('c', 's', 'c', 's', '1', '0', '1')
b = 123,456
b
(123, 456)
3.3 列表类型基础
列表类型:创建后可以随时被修改的序列类型
a = list("cscs101")
a
['c', 's', 'c', 's', '1', '0', '1']
b = [123,456]
b
[123, 456]
3.4 序列的索引
正向递增或反向递减方式索引
a = ['c','s','c','s','1','0','1']
a[-2]
'0'
a[2]
'c'
4. 字典类型
4.1 字典类型基础
字典类型:一组包含映射关系的数据组合