dict.fromkeys的用法
1
2
3
4
5
6
7
8
9
10
11
|
#dict.fromkeys的用法 #例子1 dic = 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
|