集合
集合属于可变数据类型,但它的内容必须是不可变数据类型。
特点:无序 , 不重复
有两种创建方式:
set({1,2,3})和 {1,2,3}
set1 = set({1,2,3,4}) set2 = {1,2,3,4} print(type(set1),type(set2))
结果为:
<class 'set'> <class 'set'>
集合的操作方法
增:
(1)add 将元素随机添加到集合中(无序)若即将添加的元素集合内已经存在,则不做改变
set1 = {1,2,3,4} set1.add("aires") print(set1)
结果为:
{1, 2, 3, 4, 'aires'}
(2)update 将元素迭代式的、无序的,随机添加到集合中
set1 = {1,2,3,4} set1.update(["dires","mike","dafafafa","lock",456]) print(set1)
结果为:
{1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'}
删
(1)pop 随机删除,有返回值
set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'} set1.pop() print(set1)
结果为:
{1, 2, 3, 4, 'lock', 456, 'mike', 'dafafafa'}
(2)remove 按元素去删,但若集合中没有要删除的元素则会报错
set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'} set1.remove("dafafafa") print(set1)
结果为:
{1, 2, 3, 4, 'lock', 'mike', 456, 'dires'}
(3)clear 清空集合
set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'} set1.clear() print(set1)
结果为:
set()
(4)del 删除集合
set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'} del set1 print(set1)
结果为:因为已删除,所以报错
查
for in 循环打印
set1 = {1, 'dires', 2, 3, 4, 456, 'lock', 'dafafafa', 'mike'} for i in set1: print(i)
结果为:
1
2
3
4
456
dafafafa
dires
lock
mike
其他操作
交集:& 或者 intersection 打印或返回两个集合共有的元素
set1 = {1, 2, 3, 4, 456} set2 = {4,5,6,7, 456} print(set1&set2) print(set1.intersection(set2))
结果为:
{456, 4}
{456, 4}
反交集: ^ 或者 symmetric_difference 打印或返回两个集合不共有的元素
set1 = {1, 2, 3, 4, 456} set2 = {4,5,6,7, 456} print(set1^set2) print(set1.symmetric_difference(set2))
结果为:
{1, 2, 3, 5, 6, 7}
{1, 2, 3, 5, 6, 7}
并集:|或union 将两个集合合并去重 和增加方法中的update差不多
set1 = {1, 2, 3, 4, 456} set2 = {4,5,6,7, 456} print(set1|set2) print(set1.union(set2))
结果为:
{1, 2, 3, 4, 5, 6, 7, 456}
{1, 2, 3, 4, 5, 6, 7, 456}
差集: -或 difference 集合1减去集合2中的相同元素
set1 = {1, 2, 3, 4, 456} set2 = {4,5,6,7, 456} print(set2-set1) print(set1.difference(set2))
结果为:
{5, 6, 7}
{1, 2, 3}
超集: >或issuperset 检测集合1是否为集合2的超集 若集合1的元素包含了集合2的所有元素 那么集合1便是集合2的超集 返回的是布尔值
若相同那么集合1就是集合2的超集
set1 = {1, 2, 3, 4, 456} set2 = {4, 456} print(set1>set2) print(set1.issuperset(set2))
结果为:
True
True
子集:<或issubset 与超集相反 同样返回布尔值
set1 = {1, 2, 3, 4, 456} set2 = {4, 456} print(set2<set1) print(set2.issubset(set1))
结果为:
True
True
frozenset不可变集合,让集合变成不可变类型 数据类型为frozenset
print(frozenset("aires"),type(frozenset("aires")))
结果为:
frozenset({'e', 'r', 'i', 's', 'a'}) <class 'frozenset'>