组合数据类型container objects:能够表示多个数据的类型
集合类型:集合类型是一个元素集合,元素无序不重不变
序列类型:序列类型是一个元素向量,元素有序可重可变可不变。序列类型的典型代表是列表类型、元组类型、字符串类型(但元组一旦定义,元素就不能变了)
映射类型:映射类型是“键-值”数据项的组合,元素无序不重键不可变值可变可不变,每个元素是一个键值对。映射类型的典型代表是字典类型
集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。
不可变数据类型:immutable,如数字、元组、字符串,frozenset()
可变数据类型:mutable,如列表、集合、字典
可迭代对象:iterable,如range()、序列(列表元组字符串)、集合、字典、文件,generator
不可迭代对象:如数字
很多函数的参数以及返回值都是iterable:map(), filter() ,zip() ,range(), dict.keys(), dict.items() 和 dict.values()
从九个方面展开:基,建,增,删,改,查,操,切,复
(一)基:基本概念
集合类型是一个元素集合,不分先后,不能重复,不收容可变的东西,只能加入不可变的东西,与数学中的几何概念一致。
使用set的情景:去重
因为无序,所以不能使用序号
(二)建,创建
1、使用{}创建,空{}默认为字典
2、使用set()创建
3、把iterable转换成set
可迭代对象:iterable,如range()、序列(列表元组字符串)、集合、字典、文件,generator
不可迭代对象:如数字**
(三)增
str不可变,没有增加修改
list可以使用append()增加,append是有序地增加
set.add(x),如果x不在集合中,将x增加到集合中;如果x在集合中,则返回去重
(四)删
set.remove(x),如果x不在集合中,将x删除;如果x不在集合中,则KeyError异常
set.discard(x),如果x不在集合中,将x删除;如果x不在集合中,不会报异常
set.clear(),清除集合所有元素
s.pop(),无参数,随机删除集合s中的一个元素,并可返回pop的值,当集合s为空时pop()异常KeyError
(list.pop(index=-1),返回列表list中序号为index的元素,并将该元素从列表中删除,无index,默认删除最后一个元素)
(五)改
无序,没法通过序号改
(六)查
x in set, x not in set,查询元素x是否是set的元素,返回True、False
(七)操作
1、S|T并集,同s.union(t)
2、S&T交集,同s.intersection(t)
3、S-T差集,S^T补集
4、s.issuperset(t),判断s集合是否包含t集合
(八)复制
s.copy(),复制s集合,浅复制
(九)使用frozenset()创建的集合,不能被增删,immutable
PS: source, bilibili, python123