ディープコピーのPythonとシャローコピーとの違い

まず、割り当て

連想リスト= [ ""、 "B"、 "C"、[5,6]、10]
AA =連想リスト
alist.append( "湯")
aa.append( "IOP")
連想リスト[3] .append(99 )
連想リスト[3] .append( "試験")
プリント(連想リスト)
プリント(AA)

次のように実行結果は以下のとおりです。

[ '、 'B'、 'C'、[5、6、99、 'テスト']、10、 '優'、 'IOP']
['、 'B'、 'C'、[5 、6、99、 'テスト']、10、 '優'、 'IOP']

割り当て命令は、任意の変数の値を変更し、二つの相互に可変データとの間に渡され、他の変数は値に影響を与えます

 

第二に、浅いコピー、コピー()

インポートコピー

#浅いコピーは、素子の内部要素のないコピーは、変更することがお互いに影響を与える内部の要素を持っていません

blist = [ ""、 "B"、 "C"、[5,6]、10]
BB = copy.copy(blist)
blist.append( "笑")
bb.append(89)

blist [3]。追記( "QE")
BB [3] .append(99)

印刷(blist)
プリント(BB)

結果:

[90、 'B'、 ' C'、[5、6、 'QE'、99]、10、 '母']#のblist 値BB '母'追加されず、blistのための内部要素の数[ 3] 'QE'を加え、BB BB [3]の内部構成要素に適用される
[ '、 'B' 、 'C'、[5、6、 'QE'、99]、10、89] #bb ないblist値、BB [3] 99を追加する内部素子の数は、89を加え、blistのblist [3]内部要素に作用します

第三に、深いコピー

インポートコピー

サブ要素を含む#ディープコピー、互いに独立して変更の各要素のコピー、
CLIST = [ "A"、 "B"、 "C"、[5,6]、10]
CC = copy.deepcopy(CLIST)
CLIST .append(90)
cc.append(100)

CLIST [3] .append(11)
CC [3] .append(10)

プリント(CLIST)
プリント(CC)

結果:

[ '、 'B'、 'C'、[5、6、11]、10、90]
['、 'B'、 'C'、[5、6、10]、10、100]

実際には、ディープコピー、外側の要素のすべてが、深いコピーをコピーされ、二つの変数の値を変更し、お互いに影響を与えません。

 

おすすめ

転載: www.cnblogs.com/banxiade/p/12470241.html