Альтернатива «для меня в xrange (len (x))» - PullRequest
9 голосов
/ 23 февраля 2009

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

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

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

Ответы [ 5 ]

23 голосов
/ 23 февраля 2009

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

for index, workwith in enumerate(something):
    print "element", index, "is", workwith
22 голосов
/ 23 февраля 2009

См. Pythonic

for workwith in something:
    # do things with workwith
12 голосов
/ 24 февраля 2009

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

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

for workwith in something:
    print "element", workwith

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

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

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

0 голосов
/ 23 февраля 2009

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

for i in x:
    workwith = i

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

0 голосов
/ 23 февраля 2009

например:

[workwith(i) for i in something]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...