集合及其运用

#集合:可变的数据类型,由不可变的数据类型组成(int,str ,tuple,Bool),无序,不重复
#集合用{}表示,因在字典中用{}表示空字典,所以集合的空集用set(),表示。


'''
#如何把一个列表,变为一个集合
li=[1,2,3,3,4,4,5,5,6,6,6]
set1=set(li)
print(set1)#{1, 2, 3, 4, 5, 6}
#那如何将一个列表转换成集合呢????
set2={1,2,3,4,5}
lis=list(set2)
print(lis)#[1, 2, 3, 4, 5]



#集合的增:add 随机加入 update,也是随机加入,
#不过他把加入的字符串拆解成一个个字符,再加入到集合中
set1={1,"hello",(1,2),False}#为什么把布尔值写成true在运行时就会消失呢???
set2=set1.add("Linda")#随机加入 {(1, 2), 1, False, 'Linda', 'hello'}
print(set1)
set3=set1.update("LOVE")
print(set1)#随机加入  {(1, 2), 1, False, 'V', 'E', 'L', 'hello', 'Linda', 'O'}
li=["hello"]

#update与列表中的extend类似,都是把加入的字符串拆解成一个个字符,但唯一不同的是
#update 在集合中是随机的,而extend在列表中不是随机的
a=li.extend("Linda")
print(li)




#集合的删pop随机删除,但是似乎随机删除的那一个一旦确定,每次删除的都是那一个
#remove 按元素去删
#clear 把集合清空为空集合 set()
#del 把集合直接删除,

set1={1,"hello",False,4,5,6}
set2=set1.pop()
print(set1) #{1, 4, 5, 'hello', 6}
set3=set1.remove(1)
print(set1) #{4, 5, 6, 'hello'}
set4=set1.clear()
print(set1) #set()

set6={1,"hello",False,4,5,6}
del set6 #删除整个字典,相当于这个字典没出现过
print(set6)#报错,因为set1被删除了,所以不存在了,错误原因就是set6没有命名


#集合的查:使用for循环去查询集合里面的元素
set1={1,"hello",False,4,5,6}
for i in set1:
    print(i)#False 1 4 5 6 hello


#集合的交集: set1 &set2 求两个集合都有的元素
set1={1,2,3,4,5}
set2={4,5,6}
set3=set1 &set2
print(set3)#{4,5}  这两个的结果都是相同的 intersection 是交叉路口,交集的意思
print(set1.intersection(set2))#{4,5}  set1与set2的交集,或set2与set1的交集
print(set2.intersection(set1))#{4,5}  表达的意思都是一样的




#集合的并集
set1={1,2,3,4,5}
set2={4,5,6}
set3=set1 | set2 # | 相当于Linux中的管道连接符,把set1,set2的元素连接起来
print(set3)
print(set2.union(set1))#union 是联合的意思
print(set1.union(set2))#{1, 2, 3, 4, 5, 6}




#反交集:除了两个集合共有的元素外,剩下的元素
set1={1,2,3,4,5}
set2={4,5,6}
print(set1 ^ set2) #{1, 2, 3, 6}
print(set1.symmetric_difference (set2)) #symmetric 对称的 difference 不同,把对称的去掉,余下的




#差集:set1-set2 表示的意思是set1独有的元素,而set2没有的元素
set1={1,2,3,4,5}
set2={4,5,6}
print(set1-set2)#{1, 2, 3}
print(set1.difference(set2))#表示的是set1不同于set2的元素 {1, 2, 3}
print(set2-set1)#{6}



#子集与超集返回的都是Bool值
#子集:若set1中的所有元素都在set2中,则set1为set2的子集,而set2为set1的超级
set1={1,2,3,4,5}
set2={1,2,3,4,5,6}
print(set1<set2)#True
print(set1.issubset(set2))#issubset 子集 判断一个集合的所有元素是否都包含于另一个集合
print(set2<set1)#False




#超集:一个集合包含另一个集合的所有元素,那么这个集合就叫做超集
set1={1,2,3,4,5}
set2={1,2,3,4,5,6}
print(set2>set1)#True
print(set2.issuperset(set1))#issuperset 父集 判断是否是父集 

'''
#把可变的集合变为不可变使用 set 可变---->frozenset----不可变
s={"HELLO","Linda"}
print(s,type(s))#{'Linda', 'HELLO'} <class 'set'>
s1=frozenset(s)
s2=frozenset("HAHA")
print(s1,type(s1))#frozenset({'Linda', 'HELLO'}) <class 'frozenset'>
print(s2,type(s2))#frozenset({'H', 'A'}) <class 'frozenset'>

  

猜你喜欢

转载自www.cnblogs.com/GZ1215-228513-Chichy/p/11334679.html
今日推荐