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@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor