[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