python==およびis深いコピーと浅いコピーリストの反転
1712 ワード
==とis isは、2つの参照が同じオブジェクト(参照比較)を指しているかどうかを比較します.==は、2つのオブジェクトが等しいかどうかを比較します.
浅いコピー浅いコピーは、オブジェクトの最上位レベルのコピーです.一般的には、参照がコピーされ、コンテンツがコピーされていません.
深いコピー深いコピーは、1つのオブジェクトのすべての階層のコピー(再帰)です.
リスト反転式リスト導出式とは,軽量レベルのループ作成リストを指す.
In [1]: a = [1,2,3]
In [2]: b = a
In [3]: a == b
Out[3]: True
In [4]: a is b
Out[4]: True
In [5]: import copy
In [6]: c = copy.deepcopy(a)
In [7]: a == c
Out[7]: True
In [8]: a is c
Out[8]: False
浅いコピー浅いコピーは、オブジェクトの最上位レベルのコピーです.一般的には、参照がコピーされ、コンテンツがコピーされていません.
In [1]: a = [1,2,3]
In [2]: id(a)
Out[2]: 139650508626376
In [3]: b = a
In [4]: id(b)
Out[4]: 139650508626376
In [5]: a.append(4)
In [6]: a
Out[6]: [1, 2, 3, 4]
In [7]: b
Out[7]: [1, 2, 3, 4]
In [8]: a = {'name':' '}
In [9]: id(a)
Out[9]: 139650508722376
In [10]: id(b)
Out[10]: 139650508626376
In [10]: id(b)
Out[10]: 139650508626376
In [11]: a['ID'] = 100
In [12]: a
Out[12]: {'ID': 100, 'name': ' '}
In [13]: b
Out[13]: [1, 2, 3, 4]
In [14]: b = a
In [15]: b
Out[15]: {'ID': 100, 'name': ' '}
In [16]: id(a)
Out[16]: 139650508722376
In [17]: id(b)
Out[17]: 139650508722376
In [18]:
深いコピー深いコピーは、1つのオブジェクトのすべての階層のコピー(再帰)です.
In [1]: import copy
In [2]: a = [1,2,3]
In [3]: id(a)
Out[3]: 140269250702600
In [4]: b = copy.deepcopy(a)
In [5]: id(b)
Out[5]: 140269250690120
In [6]: a
Out[6]: [1, 2, 3]
In [7]: b
Out[7]: [1, 2, 3]
In [8]: a.append(4)
In [9]: a
Out[9]: [1, 2, 3, 4]
In [10]: b
Out[10]: [1, 2, 3]
リスト反転式リスト導出式とは,軽量レベルのループ作成リストを指す.
n [12]: a = [(x,y,z) for x in range(0,2) for y in range(0,2) for z in range(0,
...: 2)]
In [13]: a
Out[13]:
[(0, 0, 0),
(0, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 0, 1),
(1, 1, 0),
(1, 1, 1)]