On trouve fréquemment des expressions de ce type dans les questions python sur SO. Que ce soit pour accéder à tous les éléments de l'itérable
for i in range(len(a)):
print(a[i])
Ce qui est simplement une façon maladroite d'écrire:
for e in a:
print(e)
Ou pour assigner des éléments de l'itérable:
for i in range(len(a)):
a[i] = a[i] * 2
Ce qui devrait être le même que:
for i, e in enumerate(a):
a[i] = e * 2
# Ou si ce n'est pas trop coûteux de créer un nouvel itérable
a = [e * 2 for e in a]
Ou pour filtrer sur les indices:
for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])
Ce qui pourrait être exprimé comme ceci:
for e in a [::2]:
print(e)
Ou lorsque vous avez juste besoin de la longueur de la liste, et pas de son contenu:
for _ in range(len(a)):
faireQuelqueChoseNonLiéA()
Ce qui pourrait être:
for _ in a:
faireQuelqueChoseNonLiéA()
En python nous avons enumerate
, le slicing, filter
, sorted
, etc... Comme les constructions for
en python sont destinées à itérer sur des itérables et non seulement des plages d'entiers, y a-t-il des cas d'utilisation réels où vous avez besoin de in range(len(a))
?