[Tutor] two ways
Liam Clarke
ml.cyresse at gmail.com
Fri Nov 11 11:30:30 CET 2005
Oooh... that's a gotcha. Shi Mu - did you understand that? There is a
crucial difference as Gregor pointed out, that I missed, and I do
apologise.
On 11/11/05, Gregor Lingl <glingl at aon.at> wrote:
> Liam Clarke schrieb:
>
> >Hi Shi,
> >
> >For what you're doing, nothing at all.
> >
> >When you use a colon, slice syntax, it defaults to [start:end] so p =
> >a[:] is the same as
> >p = a[0:len(a)]
> >
> >
> >
> But in fact there is a difference. I'll show you:
>
> >>> a=range(5) ### creates a list-object
> >>> id(a) ### which has an identity
> 14716520
> >>> p=a ### creates the new name p for the same object
> >>> id(p) ### let's see
> 14716520 ### o.k. really the same
> >>> q=a[:] ### this names a *copy* of a q
> >>> id(q) ### identity?
> 14714840 ### different!
> >>> a is p ### check if objects named a and p are identical
> True ### yes
> >>> a is q ### check if objects named a and q are identical
> False ### no!
> >>> a == q
> True ### but have the same "content", i. e. two
> different list-objects with the same elements
> >>>
> >>> ### Beware, lists are mutable:
> >>>
> >>> a
> [0, 1, 2, 3, 4]
> >>> a[1]=1001
> >>> a
> [0, 1001, 2, 3, 4]
> >>> p
> [0, 1001, 2, 3, 4] ### object named a *and* p is changed
> >>> q ### copy q of a is not changed!°
> [0, 1, 2, 3, 4]
> >>>
> regards
> Gregor
>
More information about the Tutor
mailing list