[Python-ideas] More classical for-loop

Steven D'Aprano steve at pearwood.info
Sat Feb 18 02:05:10 EST 2017

On Sat, Feb 18, 2017 at 03:27:00AM +0100, Mikhail V wrote:

> In what sense iteration over integer is limited?

It cannot iterate over something where the length is unknown in
advance, or infinite, or not meaningfully indexed by integers.

Here are four for-loops. How would you re-write this using indexing? 
Don't forget the list comprehension!

for directory, subdirs, files in os.walk(top):
    for f in files:
        print(os.path.join(top, directory, f))
    # skip .git and .hg directories, and those ending with ~
    for d in ('.git', '.hg'):
        try: subdirs.remove(d)
        except ValueError: pass
    subdirs[:] = [d for d in subdirs if not d.endswith('~')]


More information about the Python-ideas mailing list