web-dev-qa-db-ja.com

Pythonでネストされたリストをコピーする

2Dリストをコピーしたいので、一方のリストを変更しても、もう一方のリストは変更されません。

1次元のリストの場合は、次のようにします。

a = [1, 2]
b = a[:]

そして、bを変更しても、aは変更されません。

しかし、これは2次元のリストでは機能しません。

a = [[1, 2],[3, 4]]
b = a[:]

bを変更すると、aも変更されます。

どうすれば修正できますか?

46
SuperString

次元の数に関係なく機能するより一般的なソリューションについては、copy.deepcopy()を使用します。

import copy
b = copy.deepcopy(a)
51
Ayman Hourieh
b = [x[:] for x in a]

コピーパッケージをインポートせずにこのコードを使用することもできます

b=a.copy()
0
Milad