一、集合
1.定义
元素的集,同一集合下,元素不相同。集合有交集并集等操作。集合是可变的数据类型,但是集合内的元素必须是不可变的。
set1={1,2,3,4} #集合内元素不重复set2={(1,2),(3,2),('1','2','3')} #集合内元素不可变set3=set1 #集合的定义可以用直接赋值print(set1)print(set2)print(set3)#打印:# {1, 2, 3, 4}# {(1, 2), (3, 2), ('1', '2', '3')}# {1, 2, 3, 4}
2.操作
set1.add("12") #增加有add和updateprint(set1)set2.update((4,7))print(set2)#打印# {1, 2, 3, 4, '12'}# {(1, 2), ('1', '2', '3'), (3, 2), 4, 7}
print(set1.pop() ) #随机删除一个元素,有返回值print(set1)set2.remove((1,2)) #删除指定元素print(set2)set3.clear() #使成为空集print(set3,type(set3))del set3 #删除集合#打印# 1# {2, 3, 4, '12'}# {(3, 2), 4, 7, ('1', '2', '3')}# set()
#查for i in set1: print(i) #集合内元素也可以迭代,所以可以用for循环打印
#求交集set1.add((3,2))set4=set1 & set2print(set4)set5=set1.intersection(set2)print(set5)# 打印# {(3, 2)}# {(3, 2)}
#求并集set6=set1.union(set2)print(set6)#{(3, 2), 4, 7, ('1', '2', '3')}
#求并集set6=set1.union(set2)print(set6)#{(3, 2), 4, 7, ('1', '2', '3')}set7=set1 | set2print(set7)#{(3, 2), 4, 7, ('1', '2', '3')}
#求并集-交集(补集)set8={1,2,3,4,5,7,6}set9={5,6,7,10,11,12}set10=set8 ^ set9print(set10)set11=set8.symmetric_difference(set9)print(set11)# {1, 2, 3, 4, 10, 11, 12}# {1, 2, 3, 4, 10, 11, 12}
#求一个集合-交集set12=set8-set9print(set12)set13=set8.difference(set9)print(set13)# {1, 2, 3, 4}# {1, 2, 3, 4}#集合不可以加,但是可以减
#判断一个集合是否是另一个集合的子集或超集print(set8 < set9)print(set10 < set8)print(set12 < set8)print(set8 > set13)a=set8.issuperset(set12)b=set8.issubset(set12)c=set13.issuperset(set9)d=set13.issubset(set9)print(a)print(b)print(c)print(d)# False# False# True# True# True# False# False# False
#利用集合的性质去重li=[1,1,2,3,4,4,5,6,7,7]print(li,type(li))se=set(li)print(se,type(se))li=list(se)print(li,type(li))# [1, 1, 2, 3, 4, 4, 5, 6, 7, 7]# {1, 2, 3, 4, 5, 6, 7} # [1, 2, 3, 4, 5, 6, 7]
二、深拷贝与浅拷贝
#浅拷贝,只拷贝地址,样本变了,拷贝内容也变了listm=[1,2,3,4,5,6,6]listx=listmprint(listx)listm.append(9)print(listm)print(listx)
#深拷贝,拷贝内容,样本变了不影响拷贝内容#但要记住import copy,才能调用深拷贝方法import copylisty=copy.deepcopy(listm)listm.append(10)print(listm)print(listy)
#结果# [1, 2, 3, 4, 5, 6, 6]# [1, 2, 3, 4, 5, 6, 6, 9]# [1, 2, 3, 4, 5, 6, 6, 9]# [1, 2, 3, 4, 5, 6, 6, 9, 10]# [1, 2, 3, 4, 5, 6, 6, 9]