[Tutor] how to *really* copy a list
kp8 at mac.com
Sun Apr 30 01:01:42 CEST 2006
I should have realized that the nesting would create the problem, but i
that in mind... i always thought that the difference between extend and
was that extend did not yield a nested list.
I really need to revisit this issue and get it right in my mind. It is
that i remember reading about often but, now that it has bit me a few
hehe .... so much to know...
On Apr 29, 2006, at 6:00 AM, tutor-request at python.org wrote:
>> Hi Kevin,
>> Your problem is this line:
>> This is the line that mutates your original list.
>> There are a few ways you could procede here. One way is to make a
>> copy of the argument, like this:
>> def mirror(seq):
>> start = list(seq)
>> end = seq[:-1]
>> return start
>> Notice that we've not calling any methods on seq, so seq won't be
>> changed. The first line, "start = list(seq)", instructs python to
>> build a new list out of the elements of seq. You could also write
>> "start = seq[:]" here --- I'm not sure which is the preferred way.
> A little 'gotcha' with this is that if you have nested lists, these
> methods don't copy the nested lists, only the outer list (which makes
> sense, but can be surprising the first time you encounter it). If for
> some reason you want to copy nested lists, look into deepcopy(),
> otherwise you'll be fine.
More information about the Tutor