Выражения этого типа часто встречаются в вопросах Python по SO. Либо для доступа ко всем элементам итерируемого
for i in range(len(a)):
print(a[i])
Это просто громоздкий способ написания:
for e in a:
print(e)
Или для присвоения элементам итерируемого:
for i in range(len(a)):
a[i] = a[i] * 2
Что должно быть таким же, как:
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]
Или для фильтрации по индексам:
for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])
Что можно выразить так:
for e in a [::2]:
print(e)
Или когда вам просто нужна длина списка, а не его содержимое:
for _ in range(len(a)):
doSomethingUnrelatedToA()
Что могло быть:
for _ in a:
doSomethingUnrelatedToA()
В Python мы имеем enumerate
, нарезка, filter
, sorted
и т.д. ... Как питон for
конструкция предназначена перебрать итерируемые и не только в диапазон целых чисел, есть ли реальные потребительные случаи , когда вам нужны in range(len(a))
?
range(len(a))
обычно это люди, которые довольно неопытны в Python (хотя и не обязательно в программировании в целом).