"János Juhász" <[EMAIL PROTECTED]> wrote > So I can modify any item in it. > >>> for index in range(len(array)): array[index] *= 2 > ... > >>> array > [2, 4, 6, 8, 10] > > So I typed this: > >>> for item in array: item *= 2
This is equivalent to index = 0 while index < len(array): item = array[index] # references the content of the array item = item * 2 # assigns a new value to item, no change to the array content index +=1 > It confused me a little, so made another test. > >>> item1 = array[0] > >>> item1 > 1 > >>> item1 = 'changed' > >>> array > [2, 4, 6, 8, 10] > >>> item1 > 'changed' This shows that you can assign item1 to the array content and you can change the assignment to something else, all without affecting the list itself > But how can I iterate the iterate the items as mutable object, > like the pointers in C ? > Is the only way to manage the iteration with indexes ? If you want to change the contents of the array then you need to access the array, so yes you need the index. > Or is it any trick like > >>> for item in array[:]: item *= 2 That only creates a new temporary list referencing the same objects as the original it doesn't change anything in the existing one. The normal way to change a single item, in a lst is to use the index. If you are doing bulk changes use a list comprehension to build a new list: >>> array = [1,2,3,4,5] >>> print array [1, 2, 3, 4, 5] >>> array[2] = 9 >>> print array [1, 2, 9, 4, 5] >>> array = [n*2 for n in array] >>> print array [2, 4, 18, 8, 10] >>> HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor