集合(Set)是一个无序和无索引的集合,没有重复的成员.
集合的格式:set = {1,2,3,4,5}
在Python中创建集合使用花括号{}字面量的方式,或者使用set()来创建一个集合。使用{}中必须至少含一个元素,创建空集合不能使用{},这样创建的是空字典,应该使用set()的方式来创建一个集合。
1、集合的创建
# 使用字面量方法创建集合
set1 = {"Hello", "World"}
print(type(set1), set1) # <class 'set'> {'World', 'Hello'}
# print(set1[1]) # TypeError: 'set' object does not support indexing
# 使用set()的方式创建
set2 = set("hello") # {'l', 'o', 'h', 'e'}集合会去掉重复的元素,即"l"
print(set2)
# 创建空集合
set3 = {}
set4 = set()
print(type(set3), type(set4)) # <class 'dict'>字典 <class 'set'>
list1 = [1, 2, 3, 4, 3, 5, 1, 3]
# 将列表转换为集合
set6 = set(list1)
print(type(set6), set6) # <class 'set'> {1, 2, 3, 4, 5}
# 使用生成列生成列表
set5 = {num for num in range(20) if num % 3 == 0}
print(set5) # {0, 3, 6, 9, 12, 15, 18}
# 遍历循环
for ch in set5:
print(ch)
2、检查元素是否在集合中
set1 = {"你好", "Python", "这个是", "集合", "set"}
set2 = {"你好", "Python"}
print("Python" in set1) # True
print("您好" in set1) # False
print("set" not in set1) # False
print("list" not in set1) # True
print( set2 in set1 )
3、集合的交并差运算
list_1 = [1,4,5,7,3,6,7,9]
set_1 = set(list_1)
set_2 = set([2,6,0,4,66,22,8])
#集合的交集
print(set_1.intersection((set_2)))
#集合的并集
print(set_1.union(set_2))
#集合的差集
print(set_1.difference(set_2))
print(set_2.difference(set_1))
#子集
set_3 = set([4,6])
print(set_3.issubset(set_2))
print(set_3.issubset(set_1))
#对称差集,去掉交集的
print(set_1.symmetric_difference(set_2))
#判断是否有交集
print("-----")
set_4 = set([5,9,7])
print(set_3.isdisjoint((set_4)))
4、集合间的比较运算
两个集合可以用==和!=进行相等性判断,如果两个集合中的元素完全相同,那么==比较的结果就是True,否则就是False;!=则反之。
如果集合A的所有的元素也是集合B的元素,就称为A是B的子集,B是A的父集;如果集合A的子级且不等于集合B,那就称为A是B的真子级。判断子集和父集的运算符为<和>
set1 = {1, 3, 5}
set2 = {1, 2, 3, 4, 5}
set3 = set2
# <运算符表示真子集,<=运算符表示子集
print(set1 < set2, set1 <= set2) # True True
print(set2 < set3, set2 <= set3) # False True
# 通过issubset方法也能进行子集判断
print(set1.issubset(set2)) # True
print(set2.issubset(set2)) # True
# issubset方法和<=运算符是等价的
# 反过来可以用issuperset或>运算符进行超集判断
print(set2.issuperset(set1)) # True
print(set2 > set1) # True
5、集合的增删改查
# 创建一个空集合
set1 = set()
# 通过add()方法为集合添加元素
set1.add(1)
set1.add(2)
print(set1) # {1, 2}
# 通过update()给集合添加元素
set1.update({1, 2, 3, 4, 5})
print(set1) # {1, 2, 3, 4, 5} 元素在集合中已存在,该元素只会出现一次
# 通过discard()方法删除指定元素
set1.discard(4)
set1.discard(2)
set1.discard(22) # 集合里面没有不会出错
print(set1) # {1, 3, 5}
# 通过remove()方法删除指定元素
# set1.remove(6) # KeyError: 6,使用remove()方法删除指定元素时先做成员运算就不会出错了
if 6 in set1:
set1.remove(6)
# pop方法可以从集合中随机删除一个元素并返回该元素
print(set1.pop()) # 1 本次剔除的是1
# clear方法可以清空整个集合
set1.clear()
print(type(set1)) # <class 'set'>
print(set1) # set()
# 通过isdisjoint()方法判断两个集合有没有重复的元素,有返回False没有则返回Ture
set2 = {"Hello", "World"}
set3 = {"Hello", "一碗周"}
set4 = {"Hi", "Python"}
print(set2.isdisjoint(set3)) # False
print(set2.isdisjoint(set4)) # True
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/python/274923.html