Tego typu wyrażenia często można znaleźć w pytaniach Pythona dotyczących SO. Albo po prostu uzyskać dostęp do wszystkich elementów iterowalnej
for i in range(len(a)):
print(a[i])
Co jest po prostu nieporęcznym sposobem pisania:
for e in a:
print(e)
Lub do przypisywania do elementów iterowalnych:
for i in range(len(a)):
a[i] = a[i] * 2
Która powinna być taka sama jak:
for i, e in enumerate(a):
a[i] = e * 2
# Or if it isn't too expensive to create a new iterable
a = [e * 2 for e in a]
Lub do filtrowania indeksów:
for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])
Który można wyrazić w ten sposób:
for e in a [::2]:
print(e)
Lub gdy potrzebujesz tylko długości listy, a nie jej zawartości:
for _ in range(len(a)):
doSomethingUnrelatedToA()
Który może być:
for _ in a:
doSomethingUnrelatedToA()
W Pythonie mamy enumerate, krojenie, filter, sorted, itd ... jak Python forkonstrukcje są przeznaczone do iteracyjnego iterables i to nie tylko w zakresie liczb całkowitych, czy są rzeczywistym świecie używa-przypadki, gdzie trzeba in range(len(a))?
range(len(a))zwykle są to ludzie, którzy nie mają doświadczenia w Pythonie (chociaż niekoniecznie w ogóle w programowaniu).