MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: list mutability (very basic question)

  • To: mathgroup at
  • Subject: [mg131710] Re: list mutability (very basic question)
  • From: Bob Hanlon <hanlonr357 at>
  • Date: Sun, 22 Sep 2013 02:47:21 -0400 (EDT)
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • References: <>

In the statement {0}[[1]]=1 there is no memory location being referenced to
be set. And, if one were created, how would you subsequently reference it?

In Set[Part[x,1],1] I do not know if it is the same memory location but
probably not since the new value may not occupy the same amount of memory
(e.g., you could be changing amongst integers, reals, complexes, strings,
lists, =85). Whether it is the same location or not is immaterial to its
value and the ability to reference its value.

Bob Hanlon

On Sat, Sep 21, 2013 at 11:05 AM, Alan G Isaac <alan.isaac at> wrote:

> On 9/21/2013 10:15 AM, Bob Hanlon wrote:
> > Attributes[Set]
> > {HoldFirst, Protected, SequenceHold}
> Thanks, but I'm still unclear:
> why does ``{0}[[1]]=1`` raise an error?
> As a point of reference for my confusion,
> Python behaves in a way I find more intuitive:
> ``[0,1][1]=0`` does not raise an error.
> (This becomes an interesting difference when
> we get to argument passing in Mathematica, where HoldFirst
> becomes useful as a way to allow "in place" modification.)
> Back to Mathematica, am I understanding correctly that after
> ``Set[Part[x,1],1])`` that x still references the
> same location in memory?  How can I easily see that?
> (E.g., in Python, I would us the ``id`` function.)
> Thanks,
> Alan Isaac

  • Prev by Date: Re: list mutability (very basic question)
  • Next by Date: Re: Quantity
  • Previous by thread: Re: list mutability (very basic question)
  • Next by thread: Re: list mutability (very basic question)