range(len(liste)) ou énumérer(liste)? [dupliquer]
possibilité de duplication:
seul indice nécessaire: énumérer ou (x) Fourchette?
  lesquels seraient considérés comme meilleurs / plus clairs/plus rapides / plus "Pythoniques"? Je ne me soucie pas du contenu de la liste  L  , juste combien de temps il est.  
a = [f(n) for n, _ in enumerate(L)]
ou
a = [f(n) for n in range(len(L))]
  si cela fait une différence, le la fonction  f  utilise  len(list) .  
4 réponses
  certains tirages rapides semblent donner la 2e option en utilisant  range()  un léger bord au-dessus de  enumerate() :  
timeit a = [f(n) for n, _ in enumerate(mlist)]
10000 loops, best of 3: 118 us per loop
timeit a = [f(n) for n in range(len(mlist))]
10000 loops, best of 3: 102 us per loop
 et juste pour le plaisir en utilisant xrange()  (Python v2.7.2)  
timeit a = [f(n) for n in xrange(len(mlist))]
10000 loops, best of 3: 99 us per loop
  je serais favorable à    un code lisible première    , puis à l'aide de  xrange()  si disponible (c'est à dire, Pré-v Python 3.x), suivi de range() et enumerate() .  
la solution de la gamme (x)est plus rapide, parce qu'elle a moins de frais généraux, donc je l'utiliserais.
  En Python 2.x, utilisez  xrange  au lieu de range , parce que xrange  utilise moins de mémoire, parce qu'il ne crée pas de liste temporaire. En Python 3.x , il n'y a que  range , qui est la version Moins mémoire.  
  si vous utilisez Python 2.x, si vous utilisez  len()  , vous devez utiliser  xrange()  car il évitera de créer une liste des nombres dans la gamme.  
 et dans ce cas, je dirais len()  parce que vous utilisez les indices, pas les éléments de la liste.  
je dirais que comme vous n'utilisez pas l'attribut " _ " de la fonction enumarate, alors utilisez range car il est plus lisible de cette façon.