2011-05-10 11 views

Respuesta

10
for lineno, line in enumerate(f, start=1): 

Si usted está atascado en una versión de Python que no le permite establecer el número inicial para enumerate (esta función se añadió en Python 2.6), y desea utilizar esta función, la mejor solución es probablemente proporcionar una implementación que sí lo haga, en lugar de ajustar el índice devuelto por la función incorporada. Aquí hay tal implementación.

def enumerate(iterable, start=0): 
    for item in iterable: 
     yield start, item 
     start += 1 
1

Si está utilizando Python2.6 +, la respuesta de Kindall lo cubre

python2.5 y anteriores no son compatibles con el segundo argumento de enumertate, por lo que es necesario utilizar algo como esto

for i, line in enumerate(f): 
    lineno = i+1 

o

for lineno, line in ((i+1,j) for i,j in enumerate(f)): 

a menos que esté bien con la primera línea de ser el número 0

+0

¿Las personas siguen utilizando 2.5 o versiones anteriores excepto por razones de soporte heredado? –

+1

@Karl, si no me equivoco, google appengine está usando 2.5.x –

+0

@Karl, respondí una pregunta para alguien que usa 2.4 hoy más temprano –

Cuestiones relacionadas