组合数据类型
知识点1:集合类型的定义
集合是多个元素的无序组合
集合类型与数学中的集合概念一致
集合元素之间无序,每个元素唯一,不存在相同元素
集合元素不可更改,不能是可变数据类型,如列表元素
集合用大括号{}表示,元素间用逗号分隔
建立集合类型用{}或set()
建立空集合类型,必修使用set()
知识点2:集合操作符
S | T 集合并
S - T 集合差
S & T 集合交
S ^ T 集合补,在S中或者在T中,但不同时在S和T中的元素
S <= T 或 S < T 返回TRUE 或者FALSE ,判断S和T的子集关系
S >= T 或 S > T 返回TRUE 或者FALSE ,判断S和T的包含关系
四个增强操作符, |= ,-=,&=,^= 形如加减乘除的增强操作符
知识点3:集合处理方法
S.add(x) 如果x不在集合S中,将x增加到S
S.discard(x) 移除S中的元素x,如果x不在集合S中,不报错
S.remove(x) 移除S中的元素x,如过x不在集合S中,产生KeyError异常
S.clear() 移除S中的所有元素
S.pop() 随机返回S的一个元素,更新S,若S为空产生KeyError异常
S.copy() 返回集合S的一个副本
len(S) 返回集合S的元素个数
x in S 判断元素x是否在S中,是返回TRUE,否则返回FALSE
x not in S 判断元素x是否在S中,是返回FALSE,否则返回TRUE
set(x) 将其他类型变量x转变为集合类型
注:一个集合定义之后,程序内部存在有保存集合的顺序。
集合的重要用法:数据去重(利用集合元素的唯一性)
知识点4:序列类型
序列是具有先后关系的一组元素
序列是一维元素向量,元素类型可以不同
类似数学元素序列:S0,S1,...,Sn-1
元素间由序号引导,通过下表访问序列的特定元素
序列类型是基类
知识点5:序列类型通用操作符
x in S 如果x是序列S的元素,返回TRUE,否则返回FALSE
x not in S 如果x是序列S的元素,返回FALSE,否则返回TRUE
S + T 连接两个序列S和T
S*n或n*S 将序列S复制n次
S[i] 索引,返回S中的第i个元素,i是序列的序号。从左到右序列下标从0开始递增
S[i:j]或S[i:j:k]切片,返回序列S中第i到j以k为步长的元素子序列
知识点6:序列类型通用函数和方法
len(S) 返回序列S的长度
min(S) 返回序列S的最小元素,S中元素需要可以比较
max(S) 返回序列S的最大元素,S中元素需要可以比较
s.index(x)或s.index(x,i,j) 返回序列S从i开始到j位置第一次出现元素x的位置
s.count(x) 返回序列S中出现x的总次数
知识点7:元组类型
元组是序列类型的一种扩展
元组是一种序列类型,一旦创建就不能被修改
使用小括号()或tuple()创建,元素间用逗号,分隔
可以使用或不适用小括号
元组继承了序列类型的全部通用操作
元组因为创建后不能修改,因此没有特殊操作
知识点8:列表类型
列表是序列类型的一种扩展,十分常用
列表是一种序列类型,创建后可以随意被修改
使用方括[]或者list()创建,元素间用逗号,分隔,
可以使用或不使用小括号
将一个列表赋值给另一个列表,系统并没有新创建一个列表,而是两个名字指向同一个列表
知识点9:列表类型操作函数和方法
ls[i] = x 替换列表ls第i元素为x
ls[i:j:k] =lt 用列表lt替换ls切片对应元素子列表
del ls[i] 删除列表ls中第i元素
del ls[i:j:k] 删除列表ls中第i元素
ls += lt 更新列表ls,将列表lt元素增加到列表ls中
ls *= n 更新列表ls,其元素重复n次
ls.append(x) 在列表ls最后增加一个元素x
ls.clear() 删除列表ls中所有元素
ls.copy() 生成一个新列表,赋值ls中所有元素
ls.insert(i,x) 在列表ls的第i位置增加元素x
ls.pop(i) 将列表ls中第i位置元素取出并删除该元素
ls.remove(x) 将列表ls中出现的第一个元素x删除
ls.reverse() 将列表ls中的元素反转
知识点10:字典类型
字典类型是“映射”的体现
键值对:键是数据索引的拓展
字典是键值对的集合,键值对之间无序
采用大括号{}和dict()创建,键值对用冒号:表示
{<键1>:<值1>,<键2>:<值2>...,<键n>:<值n>}
d[key] 方式既可以索引,也可以赋值
空的大括号表示为字典类型而不是集合类型
知识点11:字典类型操作函数和方法
del d[k] 删除字典d 中键k对应的数据值
k in d 判断键k 是否在字典d 中,如果在返回TRUE,否则返回FALSE
d.keys() 返回字典d中所有的键信息
d.values() 返回字典d中所有的值信息
d.items() 返回字典d中所有的键值对信息
d.get(k,<default>) 键k存在,则返回相应值, 不存在则返回<dafault>值
d.pop(k,<default>) 键值k存在,则取出相应值,不在则返回<default>值
d.popitem() 随机从字典d中取出一个键值对,以元组形式返回
d.clear() 删除所有的键值对
len(d) 返回字典d中元素的个数
知识点12:jieba库
中文文本需要通过分词获得单个的词语
jieba是优秀的中文分词第三方库,需要额外安装
jieba库提供三种分词模式,最简单只需掌握一个函数
利用一个中文词库,确定汉字之间的关联概率
汉字间概率大的组成词组,形成分词结果
除了分词,用户还可以添加自定义的词组
jieba分词的三种分词模式
精确模式 :把文本精确的切分开,不存在冗余单词
全模式: 把文本中所有可能的词语都扫描出来,有冗余
搜索引擎模式: 在精确模式的基础上,对长词再次切分
jieba库常用函数
jieba.lcut(s) 精确模式,返回一个列表类型的分词结果
eg:jieba.lcut("中国是一个伟大的国家")
['中国','是','一个','伟大','的','国家']
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型的分词结果,存在冗余
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型的分词结果,存在冗余
jieba.add_word(w) 像分词词典增加新词 w