[Tutor] Multiple Simultaneous Loops

Kent Johnson kent37 at tds.net
Thu Sep 15 11:44:09 CEST 2005


Ed Singleton wrote:
> I roughly want to be able to do:
> 
> for f, x in bunch_of_files, range(z):
> 
> so that x iterates through my files, and y iterates through something else.
> 
> Is this something I can do?

In the general case use zip():
for f, x in zip(bunch_of_files, range(z)):

In this case, where the second item is just the index to the loop, use enumerate() instead of range() and zip()
for x, f in enumerate(bunch_of_files):

> If so, what would be the best way to create a range of indeterminate length?

itertools.count() generates an "unlimited" sequence.
 
> If not, is there a nice way I can do it, rather than than incrementing
> a variable (x = x + 1) every loop?
> 
> Or maybe can I access the number of times the loop has run?  ('x = x +
> 1' is so common there must be some more attractive shortcut).

enumerate()
 
> So far in learning Python I've founbd that when I feel you should be
> able to do something, then you can.

Yep :-)

Kent



More information about the Tutor mailing list