python数据元素--集合(2/2 集合的常用操作)
1.单一集合操作
s.add():指定添加set对象中的一个元素。 s.remove(element):指定删除set对象中的一个元素;若不存在,返回一个错误。 s.discard(element):指定删除集合中的一个元素;若不存在不做任何操作。 s.pop():随机删除并返回集合中的一个元素。若集合为空报错。 s.clear():清空一个集合中的所有元素。 |
(1)集合的增,删。
【范例】从指定集合添加和删除元素。
s = {1, 2, 3}
s.add(4) # 添加元素4
print(s) # {1, 2, 3, 4}
s.remove(1) # 删除元素1
print(s) # {2, 3, 4}
【范例】比较discard()和remove()函数。
s = {1, 2, 3, 4}
s.discard(5) # 删除的元素不存在则不做任何操作
s.remove(5) # 删除的元素不存在则报错
Traceback (most recent call last): File "D:/space/Pycharm/demo/test/demo2/test1.py", line 3, in <module> s.remove(5) KeyError: 5 |
【范例】随机删除集合中的元素。
s = {1, 2, 3, 4}
s.pop()
print(s) # {2, 3, 4}
s.pop()
print(s) # {3, 4}
s.pop()
print(s) # {4}
【范例】清空集合中的所有元素。
s = {1, 2, 3, 4}
s.clear()
print(s) # set()
(2)集合的改:元素为不可变类型,不能修改。
(3)集合的查(不能通过索引或key进行查询)
A:通过for in遍历:
【范例】遍历集合中所有元素。
s = {1, 2, 3, 4}
for i in s:
print(i)
B:通过迭代器访问:
1. 生成一个迭代器
2. 通过迭代器访问(next()或for in)
【范例】通过迭代器遍历集合。
s = {1, 2, 3}
# 1.生成一个迭代器
its = iter(s)
# 2.通过迭代器访问(next()或for in)
# (1)使用next
print(next(its))
print(next(its))
# (2)使用for in
for v in its:
print(v)
2.集合之间操作
(1)交集
intersection(Iterable) |
逻辑与"&" |
intersection_update(...):执行完后会修改原来集合。 |
A:intersection(Iterable)
【范例】通过intersection(Iterable)实现打印两个集合的交集。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1.intersection(s2)
print(s1, s2) # {1, 2, 3} {3, 4, 5}
print(s3) # {3}
B:逻辑与"&"
【范例】通过逻辑与“&”实现打印两个集合的交集。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 & s2
print(s3)
C:intersection_update(...):执行完后会修改原来集合。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1.intersection_update(s2)
print(s3) # None
print(s1, s2) # {3} {3, 4, 5}
(2)并集
union():返回并集 |
逻辑或“|” |
update():更新并集 |
【范例】并集的操作。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
# A:union():返回并集
print(s1.union(s2)) # {1, 2, 3, 4, 5}
# B:逻辑或“|”
print(s1 | s2) # {1, 2, 3, 4, 5}
# C:update():更新并集
print(s1) # {1, 2, 3}
# 更改s1的内容
s1.update(s1.union(s2))
print(s1) # {1, 2, 3, 4, 5}
(3)差集
difference() |
算数运算符“-” |
difference_update() |
【范例】差集的使用。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
print(s1.difference(s2)) # {1, 2}
print(s1 - s2) # {1, 2}
print(s1.difference_update(s2)) # None,无返回值
(4)判定
isdisjoint():判定两个集合是否不相交 |
issuperset():判定一个集合是否包含另一个集合 |
issubset():判定一个集合是否包含于另一个集合 |
【范例】实现集合简单的判定操作。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1}
# isdisjoint():判定两个集合是否不相交
print(s1.isdisjoint(s2)) # False
# issuperset():判定一个集合是否包含另一个集合
print(s1.issuperset(s2)) # False
print(s1.issuperset(s3)) # True
# issubset():判定一个集合是否包含于另一个集合
print(s2.issubset(s1)) # False
print(s3.issubset(s1)) # True