I'm trying to iterate over a list of elements, and make changes to the list in front of the element I'm currently working with. I can update the list, but the 'for' doesn't see the new element. Here's the code:
import string def add_element(items, point): items = items[:point+1][:] + [['new']] + items[point+1:] return items def main(): pass itmlst = [['a'],['b']] itmcntr = 0 for itm in itmlst: cmd = '' while True: cmd = raw_input('break, add, print:') if cmd == 'break': break elif cmd == 'add': itmlst = add_element(itmlst,itmcntr) elif cmd == 'print': print 'current item:', itm else: print 'invalid' itmcntr += 1 print 'finished with', itm, 'in', itmlst print len(itmlst), 'total items in list' If I provide the inputs: [print add print break print break] at the prompt, I get this output current item: ['a'] current item: ['a'] finished with ['a'] in [['a'], ['new'], ['b']] current item: ['b'] finished with ['b'] in [['a'], ['new'], ['b']] 3 total items in list The new element got added, but it wasn't used in the iteration over the list of items. Other than setting up a counter and calling len() each loop, is there some way to have the changing list recognized within the for loop? Thanks in advance for any help. Ed
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor