#1 作用
#1.1 关系运算
# friends1=['zero','kecio','hason','egon']
# friends2=['jy','bob','hason','egon']
# l=[]
# for x in friends1:
# if x in friends2:
# l.append(x)
# print(l) #['hason', 'egon']
#1.2 去重
#2 定义
# 在{}内用逗号分隔开多个元素,多个元素满足以下三个条件
# 1 集合内元素必须为不可变类型
# 2 集合内元素无序
# 3 集合内元素没有重复
# s={1,2} #s=set({1,2)}
# # s={1,[1,2]} #集合内元素必须为不可变类型,报错
# # s={'1','a','z','b',4,7} #集合内元素无序
# s={1,1,1,1,1,'a','b'} #集合内元素没有重复
# print(s) #输出 {1, 'a', 'b'}
#了解
# s={} #默认是定义空字典
# s=set() #定义空集合
#3 类型转换
# res=set('hellolllll')
# print(res) #去重,无序, {'l', 'e', 'o', 'h'}
#
# res=set([1,1,1,1,1,1])
# print(res) #{1}
# print(set([1,1,1,1,1[111,222]])) #[111,222]是可变类型,所以不行,报错
# print(set({'k1':11,'k2':222})) #字典的key不可变.{'k1', 'k2'}
#4 内置方法
#===============================================关系运算
# friends1={'zero','kecio','hason','egon'}
# friends2={'jy','bob','hason','egon'}
#4.1 取交集,两者共同的好友
# res=friends1 & friends2
# print(res)
# print(friends1.intersection(friends2))
#4.2 取出两个所有的好友,取并集
# res=friends1 | friends2
# print(res)
# print(friends1.union(friends2))
#4.3 取差集 ,取friends1独有的好友
# res= friends1 - friends2 #从一中减去二中相同的部分,分先后顺序
# print(res) #{'kecio', 'zero'}
# print(friends1.difference(friends2))
# print(friends2.difference(friends1))
#4.4 对称差集:求两个用户独有的好友们(去掉共同的好友)
# print((friends1 - friends2) | (friends2 - friends1))
# print(friends1 ^ friends2) #{'kecio', 'zero', 'jy', 'bob'}
# print(friends1.symmetric_difference(friends2))
#4.5 父子集:包含的关系
# s1={1,2,3}
# s2={1,2,4}
# #不错存在包含关系,无论大小,比较均为False
# print(s1 > s2)
#print(s1 < s2)
# s1={1,2,3}
# s2={1,2}
# print(s1 > s2) #True
# print(s1 < s2) #False
# print(s1.issuperset(s2)) #s1 > s2成立
# print(s2.issubset(s1)) #s2<s1成立
# s1={1,2,3}
# s2={1,2,3}
# # print(s1 == s2) #s1和s2互为父子
# print(s1.issuperset(s2))
# print(s2.issuperset(s1))
# =========================================去重================================
#1 只能针对不可变类型去重
底层相当于调了个for循环,假如l=[1,1,2,[1,2]]就报错
# print(set([1,1,1,2,3])) #{1, 2, 3}
#
# #2 无法保证原来的顺序
# l=[1,'a','b','z',1,1,1,2]
# s=set(l)
# print(s) #得到的结果是集合:{1, 2, 'b', 'a', 'z'}
#
# l=list(set(l))
# print(l) #得到列表,结果是;[1, 2, 'z', 'a', 'b']
# l=[
# {'name':'lili','age':18,'sex':'male'},
# {'name':'jack','age':73,'sex':'male'},
# {'name':'tom','age':20,'sex':'female'},
# {'name':'lili','age':18,'sex':'male'},
# {'name':'lili','age':18,'sex':'male'},
# ]
#循环列表l,进入第一个字典,开始new_l是个空列表,字典会添加进去,如此循环
#到第四个字典时,判断此时第四个字典和new_l中第一个字典重复了,故舍弃
# new_l=[]
# for dic in l:
# if dic not in new_l:
# new_l.append(dic)
# print(new_l)
'''
# 1.长度
>>> s={'a','b','c'}
>>> len(s)
3
# 2.成员运算
>>> 'c' in s
True
# 3.循环
>>> for item in s:
... print(item)
...
c
a
b
'''
#其他内置方法
s={1,2,3}
# ===============需要掌握的方法===============1.discard
# s.discard(4) #删除不存在的值,不会报错,返回原集合
# print(s) #{1, 2, 3}
#
# # s.remove(4) #输出元素不存在,会报错
# # print(s)
# ===============需要掌握的方法===============2.update
# s.update({1,3,5}) #新集合加到老集合中并去重
# print(s) #{1, 2, 3, 5}
# ===============需要掌握的方法===============3.pop
# res=s.pop() #每次都是随即删除
# print(res) # 1
# print(s) # {2, 3}
# ===============需要掌握的方法===============4.add
# s.add(4) #添加4
# print(s) #{1, 2, 3, 4}
res=s.isdisjoint({4,5}) #两个集合完全独立,没有共同部分.返回True
print(res) #True
#了解
# s.difference_update({3,4,5}) #等同于 s=s.difference({3,4,5}) #求差集并将差集赋值给s
# print(s)