Ed, I should have realized that the nesting would create the problem, but i didn't have that in mind... i always thought that the difference between extend and append 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 a 'gotcha' that i remember reading about often but, now that it has bit me a few times hehe .... so much to know... -kevin-- On Apr 29, 2006, at 6:00 AM, [EMAIL PROTECTED] wrote: >> >> Hi Kevin, >> >> Your problem is this line: >> seq.extend(foo) >> >> 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] >> end.reverse() >> start.extend(end) >> 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. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor