[Tutor] trouble getting a list to update

Vincent Wan wan at walrus.us
Fri Jan 7 17:14:45 CET 2005


PROBLEM SOLVED THANK YOU DANNY AND ALAN

To recap:

My program main loop called two functions one that changed a list and  
one that printed the list. Turns out that print function was bad.

I didn't understand how clever pythons for statement is. I wrote:

def write_list(list_to_write, file_name):
      "Writes elements of a list, seperated by spaces, to a file"
      for each in list_to_write:
          file_name.write(str(list_to_write[each]) + ' ')

The bug is here:

          file_name.write(str(list_to_write[each]) + ' ')

should have been

       file_name.write(str(each) + ' ')

Danny points out

> Do you see why this is buggy?  'each' is not an index into  
> list_to_write,
> but is itself an element of list_to_write.


and, Alan explains

> You are taking each element of the list then using
> it(either 0 or 1) as an index into the list, which
> means you will only ever print the first two elements!


So

for x in list:
	do_something_with_an_element(list[x])

and python keeps track of x for you.


Vincent

------------------------------------------------------------------------ 
--------------
PhD Candidate
Committee on the Conceptual and Historical Studies of Science
University of Chicago

PO Box 73727
Fairbanks, AK 99707

wan at walrus.us



More information about the Tutor mailing list