组合数据类型
组合数据类型有三种最重要的类型结构:
集合类型及操作
集合类型的定义
-
集合是多个元素的无序组合
-
集合类型与数学中的集合概念一致
-
集合元素之间无序,每个元素唯一,不存在相同元素
-
集合元素不可更改,不能是可变数据类型
-
集合的表示
-
集合用大括号{}表示,元素间用逗号分隔
-
建立集合类型用{}或set()
-
建立空集合类型,必须使用set()
-
重点
-
集合用大括号表示,元素间用逗号分隔
-
集合中每个元素唯一,不存在相同的元素
-
集合元素之间无序
集合操作符
在数学中集合有4种运算方法:并、差、交、补,Python提供了6中操作符来表达集合中的运算,如:S|T、S-T、S&T、S^T、S<=T、S>=T
集合处理方法
S.add(x)、S.discard(x)、S.remove(x)、S.clear()、S.pop()
S.copy()、len(S)、x in S、x not in S、set(x)
集合类型应用场景
包含关系比较
数据去重:集合类型所有元素无重复
小结
- 集合使用{}和set()函数创建
- 集合间操作:交(&)、并(|)、差(-)、补(^)、比较(>=<)
- 集合类型方法:.add()、.discard()、.pop()等
- 集合类型主要应用于:包含关系比较、数据去重复
序列类型及操作
序列类型的定义
-
序列是具有先后关系的一组元素
-
序列是一维元素向量,元素类型可以不同
-
类似数学元素序列:S0,S1,…,Sn-1
-
元素间由序号引导,通过下标访问序列的特定元素
序列是一个基类类型,可以衍生为字符串类型、元组类型、列表类型
序号的定义:
序列处理函数及方法
序列类型通用操作符:x in s ,x not in s ,s+t ,s*n或n*s ,s[i] ,s[i:j]或s[i:j:k]
序列类型通用函数和方法:len(s),min(s),max(s),s.index(x),s.count(x)
元组类型及操作
-
元组是序列类型的一种扩展
-
元组是一种序列类型,一旦创建就不能被修改
-
使用小括号()或tuple()创建,元素间用逗号,分隔
-
可以使用或不使用小括号
-
元组继承序列类型的全部通用操作
-
元组继承了序列类型的全部通用操作
-
元组因为创建后不能修改,因此没有特殊操作
-
使用或不使用小括号
列表类型及操作
-
列表是序列类型的一种扩展,十分常用
-
列表是一种序列类型,创建后可以随意被修改
-
使用方括号[]或list()创建,元素间用逗号,分隔
-
可以使用或不使用小括号
列表类型操作函数和方法:ls[i]=x ,ls[i:j:k]=lt , del ls[i] , del ls [i:j:k] , ls+=lt , ls *= n
方法:ls.append(x) , ls.clear() , ls.copy() , ls.insert(i,x) , ls.pop(i) , ls.remove(x) , ls.reverse()
序列类型应用场景
-
序列类型应用场景
-
元组用于元素不改变的应用场景,更多用于固定搭配场景
-
列表更加灵活,它是最常用的序列类型
-
最主要作用:表示一组有序数据,进而操作它们
元素遍历:
数据保护:如果不希望数据被程序所改变,转换成元组类型
小结
- 序列是基类类型,扩展类型包括:字符串、元组和列表
- 元组用() 和tuple()创建,列表用[]和list()创建
- 元组操作与序列操作基本相同
- 列表操作在序列操作基础上,增加了更多的灵活性
字典类型及操作
字典类型的定义
-
理解“映射”
-
映射是一种键(索引)和值(数据)的对应
-
字典类型是“映射”的体现
-
键值对:键是数据索引的扩展
-
字典是键值对的集合,键值对之间无序
-
采用大括号{}和dict()创建,键值对用冒号: 表示
在字典变量中,通过键获得值
注意:如果想生成一个空的字典类型,用{};想生成一个空的集合必须用set()
字典处理函数及方法
字典类型操作函数:del d[k] , k in d , d.keys() , d.values()
字典类型操作方法:d.get(k,) , d.pop(k,) , d.popitem() , d.clear() , len(d)
字典类型应用场景
-
映射的表达
-
映射无处不在,键值对无处不在
-
例如:统计数据出现的次数,数据是键,次数是值
-
最主要作用:表达键值对数据,进而操作它们
-
元素遍历
-
for k in d :
<语句块>
小结
- 映射关系采用键值对表达
- 字典类型使用{}和dict()创建,键值对之间用: 分隔
- d[key]方式既可以索引,也可以赋值
- 字典类型有一批操作方法和函数,最重要的是get()