[Tutor] how to *really* copy a list
kevin parks
kp8 at mac.com
Fri Apr 28 03:59:18 CEST 2006
I know there is an answer to this somewhere. it is prolly the biggest
stumbling
block to all python n00bs, but it hasn't been an issue for me in a
while.
Suddenly i am getting bit by it and can't for the life of me keep
straight the
two way of opperating on lists.
In most case you are fine operating on the list in place and altering
the
existing list. In some cases you want your code to stop molesting your
poor
mutables and really honestly sincerly copy the dang thing. In this case
i am
making a function that does odd smmetry mirroring. But i want my
orginal list
to remain intact....
>>> a = [1, 2, 3, 4]
>>> mirror(a)
[1, 2, 3, 4, 3, 2, 1]
>>> a
[1, 2, 3, 4, 3, 2, 1]
clearly this is not happening. believe it or not i googled around
figuring the
answer would be posted someplace... but if it is i haven't found it.
Every thing
i land on says copy a list by [:] slicing like i have below...
how to i really (not kidding) copy a list? I swear i used to know this,
but i haven't had
to do it in a long long long time.
# ===================================
dumb code:
def mirror(seq):
"""odd symmetry mirroring [1, 2, 3, 4] --> [1, 2, 3, 4, 3, 2, 1]"""
foo=seq[:-1] # copy list, excluding last element for odd symetry
foo.reverse() # flip it
seq.extend(foo)
return seq
More information about the Tutor
mailing list