集合和字典相同都用{},但是集合没有键,只有元素值
集合中存贮列表会报错,因为只能存贮不可变序列,而列表是可变的
直接创建:
se = {1,2,3,4}
print(se,type(se))
{1, 2, 3, 4} <class 'set'>
通过set()创建:
se = set([1,2,3,4]) #这里函数中用列表,因为要存储序列
print(se,type(se))
s = set({'name':'小王','age':18}) #用set函数将字典转换为集合仅会保留字典的键
print(s)
{1, 2, 3, 4} <class 'set'>
{'name', 'age'}
add()向集合中添加元素
s = {1,2,3}
print('修改前',s)
s.add(4)
print('修改后',s)
修改前 {1, 2, 3}
修改后 {1, 2, 3, 4}
update()将一个集合中的元素添加到另一个集合中
s1 = {1,2,3}
s2 = {4,5,6}
print('修改前',s1)
s1.update(s2)
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {1, 2, 3, 4, 5, 6}
pop()可以删除集合中随机一个元素,一般为最后一个
s1 = {1,2,3}
print('修改前',s1)
s1.pop()
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {2, 3}
remove()删除集合中指定的元素
s1 = {1,2,3}
print('修改前',s1)
s1.remove(3)
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {1, 2}
假设有两个数集A和B,A包含1、2、3,B包含3、4、5,这两个数集中很好发现,都有数字3,那么如图所示,A和B交在一起的部分3,就是A和B的交集。
s1 = {1,2,3}
s2 = {1,2,3,4,5,6}
s3 = s1 & s2
print(s3)
{1, 2, 3}
再看A和B交集外的1、2还有4、5,这一部分就是交集外的部分,我们称他们为A和B的差集。
s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1 - s2
print(s3)
{7}
也可以用difference()方法
s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1.difference(s2)
print(s3)
{7}
并集字面意思就比较好理解了,并在一起,那么就是两组数集放在一起,就是如图所示的1、2、3、4、5.注意一点,并集不重复,即使两个数组中都有3,并集中不会重复出现两个3。
s1 = {1,2,3}
s2 = {1,2,3,4,5,6}
s3 = s1 | s2
print(s3)
{1, 2, 3, 4, 5, 6}
异或集指集合中不相交的部分
python中计算异或集的运算符是 “ ^ ”
s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1 ^ s2
print(s3)
{4, 5, 6, 7}
子集:对bai于两个非空集合duA与B,如果集合A的任何一个元素都是集合zhiB的元素,我们就说 A ⊆ B(读作A含于daoB),或 B ⊇ A(读作B包含A),称集合A是集合B的子集.
真子集:如果A是B的子集,并且B中至少有一个元素不属于A,那么集合A叫做集合B的真子集.
如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集。 S1是S2的超集,若S1中一定有S2中没有的元素,则S1是S2的真超集,反过来S2是S1的真子集。
”<= “检查一个集合是否另一个集合的子集
“ < ” 检查一个集合是否是另一个集合的真子集
“> = ”检查一个集合是否另一个集合的超集
“ > ” 检查一个集合是否另一个集合的真超集
s1 = {1,2,3,}
s2 = {1,2,3,4,5,6}
s3 = s1 < s2
s4 = s1 <= s2
s5 = s1 > s2
s6 = s1 >= s2
print(s3,s4,s5,s6)
True True False False