dict.fromkeys的用法
|
1
2
3
4
5
6
7
8
9
10
11
|
#dict.fromkeys的用法#例子1dic = dict.fromkeys([1,2,3],[])print(dic) #{1: [], 2: [], 3: []}dic[2].append('alex') #{1: ['alex'], 2: ['alex'], 3: ['alex']}print(dic)#例子二dic1 = dict.fromkeys(['Q','w'],['a','b'])print(dic1) #{'Q': ['a', 'b'], 'w': ['a', 'b']}dic1['w'].append('d')print(dic1) #{'Q': ['a', 'b', 'd'], 'w': ['a', 'b', 'd']} |
浅copy和深copy
浅copy的引入:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
引入浅copy#只是第一层的列表变化l1 = [1,2,3]l2 = l1[:]l1.append(123)print(l1) #[1, 2, 3, 123]print(l2) #[1, 2, 3]#第二层列表改变l3 = [1,[2,3],4]l4 = l3[:] #实质上是浅copyl3[1].append(666)print(l3) #[1, [2, 3, 666], 4]print(l4) #[1, [2, 3, 666], 4] |
浅copy:
|
1
2
3
4
5
6
7
|
#浅copy#对于浅copy来说,第一层都是独立的内存地址,从第二层开始都是指向同一个内存地址,一变全都变。l5 = [9,8,[7,6],5]l6 = l5.copy()l5[2].append(888)print(l5,id(l5),id(l5[2])) #[9, 8, [7, 6, 888], 5] 31820816 31820856print(l6,id(l6),id(l6[2])) #[9, 8, [7, 6, 888], 5] 31819336 31820856 |
深copy:
|
1
2
3
4
5
6
7
8
|
#深copy#对于深copy来说,无论多少层,在内存中,都是两个独立的内存地址。import copyl7 = [9,8,[7,6],5]l8 = copy.deepcopy(l7)l7[2].append(888)print(l7,id(l7),id(l7[2])) #[9, 8, [7, 6, 888], 5] 41955896 41955816print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6 ], 5] 41957976 41957936
|