Python开发【第十篇】集合
程序员文章站
2022-03-04 09:10:20
集合的运算 | & | 交集 | | | | | \| | 并集 | | | 补集 | | ^ | 对称补集 | | | 超集 | 例子: 生成两个集合的并集 生成两个集合的交集 生成两个集合的补集 生成两个集合的对称补集 判断一个集合是另一个集合的子集 集合比较没有比较谁比谁大,而是比较的是谁包含 ......
集合的运算
& | 交集 |
---|---|
| | 并集 |
- | 补集 |
^ | 对称补集 |
< | 子集 |
> | 超集 |
例子:
生成两个集合的并集
s1 = {1,2,3} s2 = {2,3,4} s3 = s1|s2 #结果{1,2,3,4}
生成两个集合的交集
s1 = {1,2,3} s2 = {2,3,4} s3 = s1&s2 #结果{2,3}
生成两个集合的补集
s1 = {1,2,3} s2 = {2,3,4} s3 = s1 - s2 #结果生成s1但不属于s2的所有元素的集合 {1}
生成两个集合的对称补集
s1 = {1,2,3} s2 = {2,3,4} s3 = s1 ^ s2 #结果{1,4}
判断一个集合是另一个集合的子集
s1 = {1,2,3} s2 = {2,3} s2 < s1 #结果true s1 > s2 #结果true
集合比较没有比较谁比谁大,而是比较的是谁包含谁
集合是不能比较大小的
in和not in 也同样适用于集合
集合和字典的有点:
in 和not in 运算速度比较快
能用于集合的内建函数
len(x) |
---|
max(x) |
min(x) |
sum(x) |
any(x) |
all(x) |
python3 集合的方法
方法 | 意义 |
---|---|
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 \ |
s.difference(s2) | s - s2 补集运算,返回存在于在s中,但不在s2中的所有元素的集合 |
s.difference_update(s2) | 等同于 s -= s2 |
s.intersection(s2) | 等同于 s & s2 |
s.intersection_update(s2) | 等同于s &= s2 |
s.isdisjoint(s2) | 如果s与s2交集为空返回true,非空则返回false |
s.issubset(s2) | 如果s与s2交集为非空返回true,空则返回false |
s.issuperset(...) | 如果s为s2的子集返回true,否则返回false |
s.symmetric_difference(s2) | 返回对称补集, 等同于 s ^ s2 |
s.symmetric_difference_update(s2) | 等同于 s ^= s2, 用 s 与 s2 的对称补集更新 s |
s.union(s2) | 生成 s 与 s2的全集, 等同于 s |
集合是可迭代对象
集合推导式
语法:
{表达式 for 临时变量 in 可迭代对象 [if真值表达式]} #[]代表其中的内容可以省略
l = [1,2,3,4,5] s = {i**2 for i in l} print(s) {1,3,4,16,25}
集合推导式的嵌套等同于列表推导式的嵌套
python3推导式就三种:
- 列表推导式
- 字典推导式
- 集合推导式
python3中容器类都可以用for循环来遍历
固定集合
固定集合是不可变的,无序的,含有唯一元素的集合
作用:固定集合可以作为字典的键,还可以作为集合的值
固定集合的构造函数
#创建一个空的固定集合 frozenset() #用可迭代对象创建一个新的固定集合 frozenset(iterable)
f = frozenset() f2 = frozenset('hello')
固定集合的运算
& | 交集 |
---|---|
| | 并集 |
- | 补集 |
^ | 对称补集 |
in | 在不在 |
not in | 不在 |
< | |
<= | |
> | |
>= | |
== | |
!= |
固定集合的方法
`
s.add(x) | 添加 |
---|---|
s.remove(x) | 删除 |
下一篇: seo优化 获得高质量反向链接的方法