Quantcast
Channel: How do I clone a list so that it doesn't change unexpectedly after assignment? - Stack Overflow
Viewing all articles
Browse latest Browse all 116

Answer by shahar_m for How to clone or copy a list?

$
0
0

The deepcopy option is the only method that works for me:

from copy import deepcopya = [   [ list(range(1, 3)) for i in range(3) ]   ]b = deepcopy(a)b[0][1]=[3]print('Deep:')print(a)print(b)print('-----------------------------')a = [   [ list(range(1, 3)) for i in range(3) ]   ]b = a*1b[0][1]=[3]print('*1:')print(a)print(b)print('-----------------------------')a = [   [ list(range(1, 3)) for i in range(3) ] ]b = a[:]b[0][1]=[3]print('Vector copy:')print(a)print(b)print('-----------------------------')a = [   [ list(range(1, 3)) for i in range(3) ]  ]b = list(a)b[0][1]=[3]print('List copy:')print(a)print(b)print('-----------------------------')a = [   [ list(range(1, 3)) for i in range(3) ]  ]b = a.copy()b[0][1]=[3]print('.copy():')print(a)print(b)print('-----------------------------')a = [   [ list(range(1, 3)) for i in range(3) ]  ]b = ab[0][1]=[3]print('Shallow:')print(a)print(b)print('-----------------------------')

leads to output of:

Deep:[[[1, 2], [1, 2], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------*1:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------Vector copy:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------List copy:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------.copy():[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------Shallow:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------

Viewing all articles
Browse latest Browse all 116

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>