集合set
集合是可变的容器
集合内的数据对象都是唯一的(不能重复多次)
集合是无序的存储结构,集合中的数据没有先后顺序关系
集合内的元素必须是不可变的对象(不能放列表字典、字典等可变对象)
集合是可迭代对象
集合是相当于只有键,没有值的字典(键则是集合的数据)
创建空的集合:
set()
创建非空集合:
s={1,2,3}
集合的构造函数set
set() 创建一个空的集合对象(不能用{}来创建空集合,这是空字典)
set(iterable) 用可迭代对象创建一个新的集合
示例:
s=set()
s={1,2,3,4}
s=set(“ABC”) #s={‘A’,’B’,’C’}
s=set({1:’一’, 2:’二’, 5:’五’}) #s={1,2,5}
s=set([1,2,3,2]) #s={1,2,3}
s=set(range(10))
集合的运算:
交集 &, 并集 |, 补集 -, 子集 <, 超集 >, 对称补集 ^
& 生成两个集合的交集
s1={1,2,3}
s2={2,3,4}
s3=s1 & s2 # s3={2,3}
| 生成两个集合的并集
s1={1,2,3}
s2={2,3,4}
s3=s1 | s2 # s3={1,2,3,4}
- 生成两个集合的补集
s1={1,2,3}
s2={2,3,4}
s3=s1 - s2 #生成属于s1但不属于s2的集合 s3={1}
^ 生成两个集合的对称补集
s1={1,2,3}
s2={2,3,4}
s3=s1 ^ s2 # s3={1,4}
> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
s1={4,5,6}
s2={4,5}
s1 > s2 #True s1是s2的超集
s2 < s1 #True s2是s1的子集
== != 判断集合是否相等
{1,2,3} == {3,2,1} # True
{1,2} != {3,4} # True
>= <= 判断集合的包含和被包含关系
in /not in运算符
判断一个元素是否存在于集合中(同其他容器类型的in规则相同)
集合和字典的优点:
in/ not in运算符的查找速度快
集合的內建函数操作:
len(x),max(x),min(x),sum(x),any(x),all(x)
方法 | 意义 |
S.add(e) | 在集合中添加一个新的元素e;如果元素已经存在,则不添加 |
S.remove(e) | 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 |
S.discard(e) | 从集合S中移除一个元素e,在元素e不存在时什么都不做; |
S.clear() | 清空集合内的所有元素 |
S.copy() | 将集合进行一次浅拷贝 |
S.pop() | 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常 |
S.update(s2) | 用 S与s2得到的全集更新变量S |
集合是可迭代对象
用for 语句可以得到集合中的全部元素
s={1,’二’,3.14,’four’}
for x in s:
print(x)
集合推导式:
集合推导式是用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[]代表可省略
固定集合 frozenset
固定集合是不可变的,无序的,含有唯一元素的集合
(集合是可变的,可以增删元素,固定集合不可变)
作用:
固定集合可以作为字典的键,也可以作为集合的值
创建空的固定集合:
fz=frozenset()
创建非空的固定集合
fz=frozenset(iterable) 用可迭代对象创建集合
例:fz=frozenset([2,3,5,7])
固定集合的运算:
同set运算完全一致
交集 &, 并集 |, 补集 -, 子集 <, 超集 >, 对称补集 ^
in /not in
函数function
函数是可以重复执行的语句块,可以重复调用
作用:
用于封装语句,提高代码的重用性
用于定义用户级别的函数
语法:
def 函数名(传参列表):
语句块
说明:
1.函数名就是语句块的名称
2.函数名的命名规则和变量名相同(函数名必须是标识符)
3.函数名是一个变量
4.函数名有自己的名字空间,在函数外部不可以访问函数内部的变量,
在函数内部可以访问函数外部的变量,要让函数处理外部数据需要用参数给函数传入一些数据
5.参数列表可以为空
6.语句部分不能为空,如果为空需要用pass语句填充
函数调用:
函数名(实际调用传递参数)
说明:
函数调用是一个表达式
如果没有return语句,函数执行完毕后返None对象
如果函数需要返回其他的对象需要用到return语句