python学习笔记之组合数据类型
一、 集合类型
- 集合的定义
与数学中集合的定义相同
使用{},或者set()函数
例如:
a = {1, ‘abc’, (a, b, c)}表示一个含有三个元素的集合,三个元素分别是:整数1,字符串abc,以及元祖数据类型(a , b, c)
2. 集合常用的方法
add():如果集合中没有该元素,则将该元素添加至集合中。
discard():如果集合中有这个元素,则将该元素丢弃,如果集合中没有该元素,则不会报异常。
remove():与discard()相同,不同的是如果***集合中没有该元素,则将抛出keyError异常。***
pop():随机取出集合中的某个元素,如果集合为空,则***抛出异常***
-
集合的操作运算符
假设有两个集合数据类型a和b- a | b : 及a集合并上b集合
- a & b : 及a集合与b集合的交集
- a ^ b : a集合与b集合的所有元素除去a集合与b集合共有的元素
- a - b : a集合的所有元素除去b集合在a集合中的元素
- |=, &=, ^=, -= : 增强运算符,例如:a |= b,将a集合修改为a与b的交集。如果不采用增强运算符,如a | b,则a | b 的结果可以不会修改a集合,a | b的结果可以赋值给一个新的变量。
- >,<,>=,<=,==:比较集合之间的关系,如a < b,如果a是b的子集,则返回True,否则返回False。
-
集合的应用
- 数据去重:
假设有一个列表a = [1, 2, 1, 3, 2],要想去掉重复数据元素,可以通过set()函数生成一个没有重复数据的集合,要将该集合重新转变为列表数据类型,可以通过list()函数
a = [1, 2, 1, 3, 2] # 生成集合{1, 2, 3} (顺序不一定) b = set(a) # 生成列表数据类型 (数据不一定) c = list(b)
- 比较集合的包含关系
判断a是否是b的子集
if a < b: print("a是b的子集") else: print("a不是b的子集")
- 数据去重:
二、序列类型
- 定义:
按一定顺序排列,可重复,可用下标索引,类似于数学上的数组:s0, s1, s2, s3, s4,… - 由序列衍生出来的三种类型:字符串,元组,列表
- 序列类型常用操作符:
假设s为序列类型- x in s:判断x是否在序列s中,是返回True,否则返回false
- x not in s:与x in s相反
- 假设s1为序列类型, s + s1是将序列s与序列s1拼接生成新的序列。 s * n或n * s是将n个s重复拼接成新的列表
- 序列类型常用函数:
- max():找到序列中最大的元素,序列中的元素必须可比较,否则将报错
- min():与max()相反
- len():计算序列元素的个数
- 元组:
- 元组类型不可修改
- 操作函数与序列类似
- 创建一个元组可以用()或者tuple()
- 列表
- 列表可修改
- 创建一个列表可以用[]或者list()
- sorted():对列表进行排序,返回一个新的列表
上述结果表明,sorted()对原列表不进行修改>>> a = [1, 2, 5, 9, 3, 11] >>> sorted(a) [1, 2, 3, 5, 9, 11] >>> a [1, 2, 5, 9, 3, 11]
- 假设列表a = [1, 3, 9, 8, 3],a.index()的作用是找到第一个值指定值相同的数值的索引,如a.index(1),返回0。如果指定值不在列表中,则将抛出ValueError的异常
三、字典
- 定义
字典是由键值对构成的组合类型 - 创建字典使用{}或者dict()
- 字典的常用操作符及函数:
假设d是一个字典- a in d:字典中是否存在键为a的键值对。
- 可以使用del关键字删除指定键的键值对,如:del d[‘a’],即删除字典d中建为’a’的键值对
- d.key():获得字典d的所有键
- d.value():获得字典d的所有键值
- d.item():获得字典d的所有键值对
- d.popitem():随机取出字典d中的键值对
- 可以通过d[‘key’]来添加或修改键值对
- d.get(key,default)取出key对应的value,如果没有key,则返回default。ps:d[‘key’]读取键值对的值时,如果没有相应的key,将会抛出异常。
四、jieba库
优秀的中文分词第三方库
- 提供三种分词模式:精确模式(没有冗余),全模式,搜索引擎模式
- 精确模式:lcut(s)
全模式:lcut(s,cut_all=True)
搜索引擎模式:lcut_for_search(s)
示例:>>> jieba.lcut('我很帅气') ['我', '很', '帅气']