Digamos que você queira fazer um loop em uma coleção e obter o índice do item e o valor. Existem muitos padrões para isso:
Este é o mais básico:
for idx in range(len(things)):
print idx,things[idx]
Este é mais um criativo:
for idx, val in zip(range(len(things)), things):
print idx,val
Não faça isso!
O que a maioria das pessoas não sabe é que o Python na verdade tem uma função integrada chamada enumerate
que faz exatamente a coisa certa:
for idx,val in enumerate(things):
print idx,val
Também existe um segundo argumento que permite especificar o índice inicial, caso você não queira um baseado em zero.
Disponível desde Python 2.3.