Альтернатива 'for i in xrange (len (x))'

Итак, в другом посте я вижу следующий «плохой» фрагмент, но единственные альтернативы, которые я видел, включают исправление Python.

for i in xrange(len(something)):
  workwith = something[i]
  # do things with workwith...

Что мне делать, чтобы избежать этого «антипаттерна»?

Ответов (5)

Если вам нужно знать индекс в теле цикла:

for index, workwith in enumerate(something):
    print "element", index, "is", workwith

Поскольку есть два совершенно правильных ответа на вопрос (каждый с предположением) и автор вопроса не сообщил нам о судьбе индекса, правильный ответ должен быть таким:

Если вам вообще не нужен индекс :

for workwith in something:
    print "element", workwith

Если вам нужен индекс :

for index, workwith in enumerate(something):
    print "element", index, "is", workwith

Если мой ответ не подходит, прокомментируйте, и я удалю его :)

См. Pythonic

for workwith in something:
    # do things with workwith

Например:

[workwith(i) for i in something]

Что есть x ? Если это последовательность, итератор или строка, тогда

for i in x:
    workwith = i

будет работать нормально.