"Andreas Kuntzagk" <an**************@mdc-berlin.de> wrote in
news:be************@fu-berlin.de:
There are three ways to (shallow)copy a list l I'm aware of:
l2=list(l)
l2=l[:]
l2.copy.copy(l)
Are there any differences? Are there more (reasonable) ways?
I think the first is the most pythonic, second looks more like this other
p-language and third requires an import, so I would prefer the first.
Do you agree?
They all do slightly different things.
I think this is a fairly accurate description of what each of these does:
l2 = list(l)
This will copy any iterable object and will produce a new, distinct list as
a result.
l2=l[:]
This will copy a sequence, and will return an object of the same type as
the original. If the original is immutable, then it may simply return the
original object and not bother with making a copy.
l2=copy.copy(l)
This will copy any object whether or not it is a sequence, but it may still
return the original object for immutables.
l2=copy.deepcopy(l)
This will make a deep copy of an object. It only returns the original
object for immutables if any objects they contain are also immutable
(including their contents).
--
Duncan Booth
du****@rcp.co.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?