Sorry for breaking into this thread, but I agree completely that any unnecessary indentations should be avoided. For the same reason I advocate that the following syntax should work:
for x in some_list if some_condition: ... code ... in stead of for x in some_list if some_condition: ... code ... All the best! @ PS: maybe using 'sets' can help you out for a particular problem. Gal Diskin wrote: > Nothing seriously wrong, but it's not too elegent. Especially when the > number of lists you want to iterate over gets bigger (especially > because of the indentation in python). As you noticed (an phrased > better than me), what I was wondering is if there is a way to iterate > over the cartesian product, but without actually doing all n for loops > but using a single "for" loop. > > Thanks for replying me. > > > On Dec 13, 3:58 pm, Roberto Bonvallet <[EMAIL PROTECTED]> > wrote: >> Gal Diskin wrote: >> > Hi, >> > I am writing a code that needs to iterate over 3 lists at the same >> > time, i.e something like this: >> >> > for x1 in l1: >> > for x2 in l2: >> > for x3 in l3: >> > print "do something with", x1, x2, x3What's wrong with this? >> >> [...] >> >> > I'd be very happy to receive ideas about how to do this in one loop and >> > with minimal initialization (if at all required).def >> > cartesian_product(l1, l2, l3): >> for i in l1: >> for j in l2: >> for k in l3: >> yield (i, j, k) >> >> for (i, j, k) in cartesian_product(l1, l2, l3): >> print "do something with", i, j, k >> >> -- >> Roberto Bonvallet -- http://mail.python.org/mailman/listinfo/python-list