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[:] #实质上是浅copy
l3[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 31820856
print(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 copy
l7 = [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 41955816
print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6 ], 5] 41957976 41957936
|