Python随笔7-集合和深浅拷贝理解

 1 #set    本身是可变的,但是里面的元素是不可变得
 2 #set    集合是无序的,并且里面的元素不能重复
 3 
 4 a = {1,1,1,2,3,4,5,6,"str",True,12.21213}
 5 
 6 print(a) # 1 被自动去重了{'str', 1, 2, 3, 4, 5, 6, 12.21213}
 7 
 8 #集合增
 9 
10 a.add("c") #add增加的值必须是不可变得
11 
12 a.update([1,2,3])#迭代添加不可变元素
13 
14 #集合删除
15 
16 a.remove("str")   #暗元素去删除
17 
18 a.pop() #arbitrary  随机进行删除
19 
20 # a.clear()
21 
22 # del a
23 
24 set1 = {1,2,3,4,5}
25 set2 = {1,2,5,6,8}
26 
27 a1 = set1.intersection(set2)#交集  & 共有
28 
29 a2 = set1.symmetric_difference(set2)  #反交集 都没有
30 
31 a3 = set1.union(set2)#并集  | 全部
32 
33 a4 = set1.difference(set2) #差集 - 对set2来说,set1独有的
34 
35 a5 = set1.issubset(set2) #子集判断 如果set1里面的内容set2都有,set1就是set的子集
36 
37 a6 = set2.issuperset(set1)#超集判断 如果set2的内容包含set1,set2就是set1的超集
38 
39 print(a1,a2,a3,a4,a5,a6)
40 
41 # 重点 不可变集合 frozenset无法添加,删除
42 
43 a7 = frozenset("abcdfdsjf")
44 
45 print(type(a7)) #<class 'frozenset'>
46 
47 # frozenset 无增加删除方法,
48 
49 
50 #重点 深浅拷贝
51 
52 # 普通的拷贝直接只用copy关键字
53 
54 #例如:
55 
56 oldList = [1,2,3,[4,5,6,[7,8]]]
57 
58 newList = oldList.copy()
59 
60 oldList[3][3][0] = "999"
61 
62 print("浅拷贝新列表",newList)    #浅拷贝 只能拷贝最外面一层元素,嵌套的元素无法拷贝,原值改变,新的列表也将改变
63 
64 # 若想完全拷贝嵌套元素,需要导入 copy  包
65 
66 # 例:
67 
68 import copy
69 
70 oldList = [1,2,3,[4,5,6,[7,8]]]
71 
72 newList = copy.deepcopy(oldList) #运用 deepcopy进行深拷贝
73 
74 oldList[3][3][0] = "999"
75 
76 print("深拷贝新列表",newList)

猜你喜欢

转载自www.cnblogs.com/huasongweb/p/9503125.html
今日推荐