I am trying to copy the nested list a
, but do not know how to do it without using the copy.deepcopy
function.
a = [[1, 2], [3, 4]]
I used:
b = a[:]
and
b = a[:][:]
But they all turn out to be shallow copy.
Any hints?
I am trying to copy the nested list a
, but do not know how to do it without using the copy.deepcopy
function.
a = [[1, 2], [3, 4]]
I used:
b = a[:]
and
b = a[:][:]
But they all turn out to be shallow copy.
Any hints?
This is a complete cheat - but will work for lists of "primitives" - lists, dicts, strings, numbers:
There are probably implications to consider for this - and it will not be particularly fast.
You can use a LC if there's but a single level.
My entry to simulate
copy.deepcopy
:The strategy: iterate across each element of the passed-in object, recursively descending into elements that are also iterable and making new objects of their same type.
I make no claim whatsoever that this is comprehensive or without fault [1] (don't pass in an object that references itself!) but should get you started.
[1] Truly! The point here is to demonstrate, not cover every possible eventuality. The source to
copy.deepcopy
is 50 lines long and it doesn't handle everything.I found a way to do it using recursion.