#!/usr/bin/env python#-*- coding: utf-8 -*-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#第一类集合:可变集合#******************通过set类创建的对象******************#1:集合的格式:使用大括号 { } 或者 set() 函数创建集合#定义:1、不同元素组成;2、无序;3、集合中的元素必须是不可变类型(数字,字符串,元组)#注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典#se1 = {11,"qwer",(11,22,)}#se2 = set((11,22,33)) #set创建集合时,括号内必须是可迭代的对象#print(se1,se2)

#2:集合是可迭代的#se = set("qeyqi2321oi3h")#for i in se:#print(i)

#3:集合其他方法in,not in ,len()#se = set("qeyqi2321oi3h")#print(2 in se)#print(len(se))

#******************set类中提供的方法******************#1:add()方法:向集合添加元素#se = {11,"qwer",(11,22,)}#s = se.add(2222) #括号内必须是可哈希的对象#print(se)

#2:clear()方法:清空集合#se = {11,"qwer",(11,22,)}#print(se)#se.clear()#print(se)

#3:copy()方法:浅拷贝集合#se1 = {11,"qwer",(11,22,)}#se2 = se1.copy()#print(se2)

#4:集合内元素的删除#s = {11,"22",("qwer",5,6,),"qwer"}#s1 = s.remove(11) #remove删除特定元素,要删除的元素不存在时,会报错;无返回值#print(s,s1)#

#s = {11,"22",("qwer",5,6,),"qwer"}#s2 = s.discard(11) #discard删除特定元素,要删除的元素不存在时,不会报错;无返回值#print(s,s2)#

#s = {11,"22",("qwer",5,6,),"qwer"}#s.pop() #随机删除一个元素,有返回值#print(s,s.pop())

#5:update()方法:用于修改当前集合,可以添加新的元素或集合到当前集合中#如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略#se1 = set("123456")#print(se1)#se2 = set("qwerdf")#se2.update(se1)#print(se2)

#6:issubset()方法:判断se2是不是se1的子集,并返回bool值#se1 = {11,22,33}#se2 = {11,22}#print(se2.issubset(se1))

#7:issuperset()方法:判断se1是不是se2的父集,并返回bool值#se1 = {11,22,33}#se2 = {11,22}#print(se1.issuperset(se2))

#8:isdisjoint()方法:判断两个集合有没有交集,没有返回True#se1 = {11,22,33}#se2 = {11,22}#print(se1.isdisjoint(se2))#se3 = {44,55}#se4 = {66,77}#print(se3.isdisjoint(se4))

#******************集合中常用的关系运算******************#1:求集合的交集#se1 = {1,2,"hello",3}#se2 = {3,4,5,"hello"}#print(se1,se2)#print(se1.intersection(se2))#print(se1&se2)#se2.intersection_update(se1) #intersection_update方法:求交集,并且用交集覆盖se2#print(se1,se2)

#2:求集合的并集#se1 = {1,2,"hello",3}#se2 = {3,4,5,"hello"}#print(se1,se2)#print(se1.union(se2))#print(se1|se2)

#3:求集合的差集#se1 = {1,2,"hello",3}#se2 = {3,4,5,"hello"}#print(se1,se2)

#print(se1.difference(se2)) #在se1去掉和se2相同的部分后剩余的部分#print(se1-se2)

#print(se2.difference(se1)) #在se2去掉和se1相同的部分后剩余的部分#print(se2-se1)

#se2.difference_update(se1) #difference_update方法:求并集,并且用并集覆盖se2#print(se1,se2)

#4:求集合的交叉补集#se1 = {1,2,"hello",3}#se2 = {3,4,5,"hello"}#print(se1,se2)#print(se1.symmetric_difference(se2)) #返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。#print(se1^se2)#se2.symmetric_difference_update(se1) #symmetric_difference_update方法:求交叉补集,并且用交叉补集覆盖se2#print(se1,se2)

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#第二类集合:不可变集合#注意:1:不可变集合它不可以增加删除集合中的元素,该集合中的内容是不可改变的,类似于字符串、元组#2:不可变集合,除了内容不能更改外,其他功能及操作跟可变集合set一样#s1 = frozenset("qwer1234") #传入序列,生成不可变集合#s2 = frozenset({11,22,33}) #传入集合,生成不可变集合#s3 =frozenset() #定义空的不可变集合