[Python-Dev] Use for enumerate() (original) (raw)
Patrick K. O'Brien pobrien@orbtech.com
Fri, 26 Apr 2002 18:31:29 -0500
- Previous message: [Python-Dev] Use for enumerate()
- Next message: [Python-Dev] Use for enumerate()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Guido van Rossum]
def getline(filename, lineno): if lineno < 1: return '' lineno -= 1 f = open(filename) for i, line in enumerate(f): if i == lineno: break else: line = '' f.close() return line Challenge 1: do it faster. Challenge 2: do it with less code. Challenge 3: do it faster and with less code. Rules: the semantics must be the same: always close the file, return '' for lineno out of range; lineno < 1 should not open the file.
I doubt it's faster and it's barely less code (I had to resist the urge to add a try/finally), but here is the only decent variation I could come up with:
def getline(filename, lineno): line = '' if lineno > 0: lineno -= 1 f = open(filename) for i, s in enumerate(f): if i == lineno: line = s break f.close() return line
I'm ready to give up now. What's the fastest, smallest solution?
Patrick K. O'Brien Orbtech
- Previous message: [Python-Dev] Use for enumerate()
- Next message: [Python-Dev] Use for enumerate()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]