[Python-Dev] Use for enumerate()

Guido van Rossum guido@python.org
Sat, 27 Apr 2002 09:26:17 -0400


> > Challenge 3: do it faster and with less code.
> 
> def getline(filename, lineno):
>     if lineno < 1:
>         return ''
>     f = open(filename)
>     i, line = zip(xrange(lineno), f)[-1]
>     f.close()
>     if i+1 == lineno:
>         return line
>     return ''

Cute, but it builds up a list containing all the lines up to lineno.
An implicit part of the exercise (sorry for not making this explicit)
was to avoid this -- IOW it should work even if the file is too large
to fit in memory (as long as each individual line fits in memory).

--Guido van Rossum (home page: http://www.python.org/~guido/)