在python中,使用大括号然后直接填充元素就能创建集合类型。
s1 = {}
s2 = {1, 2, 3, 4, 5}
print(type(s1))
print(type(s2))
输出结果为:
# 直接声明没有数据是字典类型
<class 'dict'>
# 添加了元素就变为集合类型
<class 'set'>
集合中有几个方法,具体的应用如下:
add
add方法就是给集合中添加元素
s1 = {1, 2, 3, 4, 5}
s1.add(8)
print(s1)
输出结果为:
{1, 2, 3, 4, 5, 8}
clear
清空集合中的元素
s1 = {1, 2, 3, 4, 5}
s1.clear()
print(s1)
输出结果为:
set()
copy
复制一个集合出来
s1 = {1, 2, 3, 4, 5}
s2 = s1.copy()
print(s1)
print(s2)
输出结果为:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
difference
求差集,不改变原数据。可以使用"-"实现相同功能。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.difference(s2))
print(s2.difference(s1))
print(s1)
print(s2)
print(s1 - s2)
print(s2 - s1)
输出结果为:
{1, 2}
{6, 7}
# 并没有改变原数据
{1, 2, 3, 4, 5}
{3, 4, 5, 6, 7}
# 使用"-"实现了相同功能
{1, 2}
{6, 7}
difference_update
求差集,改变原数据。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s1.difference_update(s2)
print(s1)
print(s2)
输出结果为:
# s1已经发生了改变
{1, 2}
{3, 4, 5, 6, 7}
discard
删除元素,如果元素不存在,则不进行任何处理,不报错。
s1 = {1, 2, 3, 4, 5}
s1.discard(3)
print(s1)
s1.discard(3)
print(s1)
输出结果为:
{1, 2, 4, 5}
{1, 2, 4, 5}
intersection
交集,不改变原数据。可以使用"&"实现相同的功能。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.intersection(s2))
print(s1 & s2)
print(s1)
print(s2)
输出结果为:
{3, 4, 5}
{3, 4, 5}
{1, 2, 3, 4, 5}
{3, 4, 5, 6, 7}
intersection_update
求交集,改变原数据。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.intersection_update(s2))
print(s1)
print(s2)
输出结果为:
None
{3, 4, 5}
{3, 4, 5, 6, 7}
isdisjoint
是否含有相同的数据,如果含有为False,否则为True。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {8, 9, 0}
print(s1.isdisjoint(s2))
print(s1.isdisjoint(s3))
输出结果为:
False
True
issubset
是否是子集,如果是为True,否则为False。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.issubset(s1))
print(s3.issubset(s2))
输出结果为:
True
False
issuperset
是否是父集,如果是为True,否则为False。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s1.issuperset(s2))
print(s1.issuperset(s3))
输出结果为:
False
True
pop
随机删除元素,如果集合为空,则报错。
s1 = {1, 4}
print(s1.pop())
print(s1.pop())
print(s1.pop())
输出结果为:
1
4
Traceback (most recent call last):
File "C:/U/set_test.py", line 14, in <module>
print(s1.pop())
KeyError: 'pop from an empty set'
remove
删除元素,如果删除元素不存在,则报错。
s1 = {1, 4}
print(s1.remove(1))
print(s1)
print(s1.remove(0))
print(s1)
输出结果为:
None
{4}
Traceback (most recent call last):
File "C:/U/set_test.py", line 14, in <module>
print(s1.remove(0))
KeyError: 0
symmetric_difference
获得相同元素以外的元素的集合,原数据不改变。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.symmetric_difference(s1))
print(s3.symmetric_difference(s2))
输出结果为:
{2, 3}
{1, 3, 6, 7}
symmetric_difference_update
获得相同元素以外的元素的集合,改变原数据。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.symmetric_difference_update(s1))
print(s3)
print(s3.symmetric_difference_update(s2))
print(s3)
输出结果为:
None
{2, 3}
None
{2, 4, 5, 6, 7}
union
并集,原数据不改变。可以使用"|"完成相同的功能
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.union(s2))
print(s1 | s2)
print(s1)
print(s2)
输出结果为:
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5}
{3, 4, 5, 6, 7}
update
并集,原数据改变。
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.update(s2))
print(s1)
print(s2)
输出结果为:
None
{1, 2, 3, 4, 5, 6, 7}
{3, 4, 5, 6, 7}