集合及其操作

集合及其操作

#_author:Administrator
#date:2019/10/31
#集合(重点)
#集合的创建
#集合是无序,不重复的,set是可变集合(可添加和删除元素,非可哈希的,不能用作字典的键,也不能作为其他集合的元素)
s=set('Mr. starrr')
print(s)#{'a', 'r', '.', 'M', 't', ' ', 's'}集合可以去除重复的内容
a=['ale','eveb','ale','mx']
print(set(a))#{'eveb', 'ale', 'mx'}
print(type(set(a)))#<class 'set'>
#转化为一个列表
b=list(set(a))
print(b)#['mx', 'ale', 'eveb']
print(type(b))#<class 'list'>
#Notice:集合元素必须是可哈希的,即不变类型
# m1=[[1,2],'star',123]
# n=set(m1)
# print(n)#TypeError: unhashable type: 'list'
#
# m2=[{1:1},'star',123]
# n2=set(m1)
# print(n2)#TypeError: unhashable type: 'dict'
#(2).frozenset是不可变集合
m3=['q',1,4]
n3=frozenset(m3)
print(n3)#frozenset({1, 'q', 4})
print(type(n3))#<class 'frozenset'>
#2.访问集合(for 循环,或者用in)
q=[1,4,'star']
s1=set(q)
print(4 in s1)#True
#3.更新集合
#(1)
s1.add('u')#添加一个元素
print(s1)#{1, 'star', 4, 'u'}
s1.add('uu')
print(s1)#{1, 'star', 4, 'uu'}
#(2)update
d=[1,'a','zxc','star']
x=set(d)
x.update('eeeo')#单个字符添加进去
print(x)#{'e', 1, 'a', 'o', 'star', 'zxc'}
x.update([234,'wop'])#作为一个整体添加进去
print(x)#{'wop', 1, 'zxc', 'star', 234, 'o', 'a', 'e'}
x.remove('zxc')
print(x)#{1, 'star', 'wop', 234, 'a', 'e', 'o'}
x.pop()#随机删除
print(x)
x.clear()
print(x)#set()
# del x
# print(x)#NameError: name 'x' is not defined
#4.集合类型操作符
#(1)集合等价与不等价
print(set('asd')==set('asdsdsd'))#True
#(2)子集与超级
print(set('asd')<set('asdhdjhwud'))#True
#(3)联合
print(set('asd') or set('asdhdjhwud'))#{'a', 's', 'd'}
print(set('asd') and set('asdhdjhwud'))#{'h', 'd', 'a', 'u', 's', 'w', 'j'}
#交集
a=set([1,2,3,4,5])
b=set([4,5,6,7,8])
print(a.intersection(b))#{4, 5} print(a & b)
#并集
print(a.union(b))#{1, 2, 3, 4, 5, 6, 7, 8}同 a | b
#差集
print(a.difference(b))#{1, 2, 3} in a not but in b 同print(a-b)
print(b.difference(a))#{8, 6, 7} 同print(b-a)
#对称差集
print(a.symmetric_difference(b))#{1, 2, 3, 6, 7, 8}

#父级 超集
print(a.issuperset(b))#False a > b
#子集
print(a.issubset(b))#False a< b
#另一种实现
a=set([1,2,3,4,5])
b=set([4,5,6,7,8])
print(a-b)#{1, 2, 3}
print(b-a)#{8, 6, 7}
print(a & b)#{4, 5}
print(a | b)#{1, 2, 3, 4, 5, 6, 7, 8}
print(a ^ b)#{1, 2, 3, 6, 7, 8}




猜你喜欢

转载自www.cnblogs.com/startl/p/11772946.html