一、集合的作用
主要作用就是关系运算和去重,与列表(list)、元组(tuple)、字典(dict)一样都可以存放多个值
二、集合的定义
定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
1:每个元素必须是不可变类型
2:集合内没有重复的元素
3:集合内元素无序
s = {1,2,3,4} # 本质 s = set({1,2,3,4})
注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。
注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
d = {} # 默认是空字典
s
= set() # 这才是定义空集合
三、数据类型
注意:但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
s = set([1, 2, 3, 4])
s1 = set((1, 2, 3, 4))
s2 = set({‘name‘: ‘jason‘})
s3 = set(‘egon‘)
print(s,s1,s2,s3)
输出结果:{1, 2, 3, 4} {1, 2, 3, 4} {‘name‘} {‘n‘, ‘e‘, ‘g‘, ‘o‘}
四、内置方法
1、关系运算:&取交集、|取并集、-取差集、^取对称差集
注意:下面的关系运算可以用符号进行,也有相应的方法进行
定义两个集合:friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
1.1 用&取交集:取出friends1和friends2相同的值
print(friends1 & friends2)
print(friends1.intersection(friends2))
输出结果:{‘jason‘, ‘egon‘}
1.2 用 | 取并集:取出friends1和friends2所有的值,相同的值至保留一个
print(friends1 | friends2)
print(friends1.union(friends2))
输出结果:{‘Jy‘, ‘jason‘, ‘egon‘, ‘kevin‘, ‘zero‘, ‘ricky‘}
1.3 用 - 取差集:取出friends1独有的值合取出friends2独有的值
注意:取差集时需要取出的值必须放在前面
print(friends1 - friends2)
print(friends1.difference(friends2))
输出结果:{‘zero‘, ‘kevin‘}
print(friends2 - friends1)
print(friends1.difference(friends2))
输出结果:{‘Jy‘, ‘ricky‘}
1.4 用 ^ 取对称差集:取出friends1和friends2独有的值(去掉他们共有的值)
print(friends1 ^ friends2)
print(friends1.symmetric_difference(friends2))
输出结果:{‘zero‘, ‘ricky‘, ‘kevin‘, ‘Jy‘}
1.5 父子集:一个集合是否包含另一个集合(一个集合包含另一个集合为父子,如果相同它们互为父子)
包含则返回True,不包含则返回False
案例一:
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"zero","kevin","jason"}
print(friends1 > friends2) #friends1 包含friends2,表示friends1 是friends2的父亲,则返回True
print(friends1.issuperset(friends2))
输出结果:True
print(friends2 < friends1) #friends2不包含friends1,表示friends2是friends1的儿子,则返回True
print(friends2.issubset(friends1))
输出结果:False
print(friends1 == friends2) #如果friends1和friends2集合中的值一样,表示他们互为父子,则返回True
print(friends2.issubset(friends1)) # 表示friends2是friends1的父亲
print(friends1.issubset(friends2)) #表示friends1是friends2的父亲
输出结果:True
原文:https://www.cnblogs.com/xialiang37/p/14083731.html