-2

プログラムの実行時にアイテムを追加するリストがあり、このリストのコピーを作成したので、オリジナルを変更せずにコピーを変更/修正/検査できます。

これは私がこれまでに得たものです:

import copy
originallist.append(stuff)

combined=''.join(originallist)

copyoriginal=copy.deepcopy(originallist) 
##this didnt work as copyoriginal stayed empty [] while originallist would change.
#i also tried 
copyoriginal=list(originallist) 
#AND 
copyoriginal=originallist[:] 
#and with both cases copyoriginal remained at [] while originallist would change!!

なぜ変わらないのですか?

4

3 に答える 3

1

リストのコピーは、元のリストに加えられた変更には従いません。コピーが作成されると、python のリストは互いに完全に分離されます。

あなたがやろうとしていることは、カスタムクラスなしでは不可能です。

于 2012-10-23T03:07:59.563 に答える
0

同じオブジェクトを参照する名前を付ける場合は、次のようにします。

a = b = []
a.append(1)
b.append(2)
print(b)
# returns [1,2]

どちらか一方に影響を与えずに一方を変更することはできませんが、どちらかで変更を確認することはできます。

于 2012-10-23T03:22:11.390 に答える
0

別のリストへの「変更についていく」場合は、コピーの代わりに単純な参照を使用することを検討してください。

a = [1, 2, 3]
b = a # b refers to a

a[0] = 3
print b # prints [3, 2, 3]

変更の追跡を停止したい場合は、いつでもコピーを作成できます。

b = b[:]
于 2012-10-23T03:21:13.510 に答える