(十一)Python学习之集合

(十一)Python学习之集合

一、定义
集合: 由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key;
二、特性
1.集合由不同元素组成;
2.集合是无序的;
3.集合中元素必须是不可变类型(数字、字符串、元祖);
三、集合的创建
1.直接创建;
2.set(): 创建可变集合,参数为可迭代类型;
3.frozenset(): 创建不可变集合,参数为可迭代类型;

s1 = {1, 2, 3}
s2 = set("345")
s3 = frozenset("789")
print(s1)
print(s2)
print(s3)

在这里插入图片描述
四、集合的基本方法
1.add(element): 添加一个元素element;
2.clear(): 清空集合;
3.copy(): 浅复制;

s1 = {1, 2, 3}
print(s1)
s1.add(5)
print(s1)
s2 = s1.copy()
print(s2)
s2.clear()
print(s2)

在这里插入图片描述
4.pop(): 随机删除集合中的一个元素,并返回该元素;
5.remove(element): 指定删除,不存在报错
6.discard(element): 删除不会报错

s1 = {1, 2, 3, 4, 5, 6, 7, 8}
print(s1)
v = s1.pop()
print(v, s1)
s1.remove(6)
print(s1)
s1.discard(8)
print(s1)
s1.discard(10)
print(s1)

在这里插入图片描述
7.update(s): 用s更新集合;s为可迭代对象;

s1 = {1, 2, 3}
print(s1)
s1.update({3, 4})
print(s1)
s1.update("abc")
print(s1)

在这里插入图片描述
五、集合的运算方法及运算符
1.交集:
运算符: &
方法:
intersection(s): 做交集,返回交集结果;
intersection_update(s): 做交集,用结果跟新自身;

s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1)
print(s2)
print(s1 & s2)
print(s1.intersection(s2), s1)
print(s1.intersection_update(s2), s1)

在这里插入图片描述
2.并集:
运算符: |
方法:
union(s): 做并集,返回并集结果;

s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1)
print(s2)
print(s1 | s2)
print(s1.union(s2), s1)

在这里插入图片描述
3.差集:
运算符: -
方法:
difference(s): 做差集,返回差集结果;
difference_update(s): 做差集,用结果跟新自身;

s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1)
print(s2)
print(s1 - s2)
print(s1.difference(s2), s1)
print(s1.difference_update(s2), s1)

在这里插入图片描述
4.交叉补集:
运算符: ^
方法:
symmetric_difference(s): 做交叉补集,返回交叉补集结果;
symmetric_difference_update(s): 做交叉补集,用结果跟新自身;

s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1)
print(s2)
print(s1 ^ s2)
print(s1.symmetric_difference(s2), s1)
print(s1.symmetric_difference_update(s2), s1)

在这里插入图片描述
5.isdisjoint(s): 判断集合中是否有包含集合s中的元素;不包含返回Ture,包含返回False;

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {4, 5, 6}
print(s1)
print(s2)
print(s3)
print(s1.isdisjoint(s2))
print(s1.isdisjoint(s3))

在这里插入图片描述
6.父集和子集:
运算符:
方法:>=(是否为父集),>(是否为真父集),<=(是否为子集),<(是否为真子集)
issuperset(s):是否为s的父集;
issubset(s):是否为s的子集。

s1 = {1, 2, 3}
s2 = {1, 2, 3, 4, 5, 6}
print(s1)
print(s2)
print(s1 >= s2, s1.issuperset(s2))
print(s1 <= s2, s1.issubset(s2))
print(s1 >= s2, s2.issuperset(s1))
print(s1 <= s2, s2.issubset(s1))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38936626/article/details/86492781
今日推荐