Re: [Tutor] Being beaten up by a tuple that's an integer thats a tuple that may be an unknown 'thing'.
by Bob Gailer other posts by this author
Nov 3 2009 4:05PM messages near this date
[Tutor] Being beaten up by a tuple that's an integer thats a tuple that may be an unknown 'thing'.
|
Re: [Tutor] Being beaten up by a tuple that's an integer thats a tuple that may be an unknown 'thing'.
Robert Berman wrote:
>
> In [69]: l1=[(0,0)] * 4
>
> In [70]: l1
> Out[70]: [(0, 0), (0, 0), (0, 0), (0, 0)]
>
> In [71]: l1[2][0]
> Out[71]: 0
>
> In [72]: l1[2][0] = 3
> ---------------------------------------------------------------------------
> TypeError Traceback (most recent call
> last)
>
> /home/bermanrl/<ipython console> in <module>()
>
> TypeError: 'tuple' object does not support item assignment
>
> First question, is the error referring to the assignment (3) or the
> index [2][0]. I think it is the index but if that is the case why does
> l1[2][0] produce the value assigned to that location and not the same
> error message.
>
> Second question, I do know that l1[2] = 3,1 will work. Does this mean
> I must know the value of both items in l1[2] before I change either
> value. I guess the correct question is how do I change or set the
> value of l1[0][1] when I specifically mean the second item of an
> element of a 2D array?
>
> I have read numerous explanations of this problem thanks to Google;
> but no real explanation of setting of one element of the pair without
> setting the second element of the pair as well.
>
> For whatever glimmers of clarity anyone can offer. I thank you.
Tuples are immutable. Replace them with lists and voila. l1=[[0,0]] * 4
But also realize that you are creating a list with 4 copies of one
object [0,0]. Assigning to one changes all!
--
Bob Gailer
Chapel Hill NC
919-636-4239
_______________________________________________
Tutor maillist - Tutor@[...].org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
Thread:
Robert Berman
Bob Gailer
Andre Engels
Mark Tolonen
Emile van Sebille
Wayne Werner
Robert Berman
|