Для цикла while или while, чтобы сделать что-то n раз
В Python у вас есть два прекрасных способа повторить некоторые действия более одного раза. Один из них - цикл while
, а другой - for
. Поэтому давайте посмотрим на две простые части кода:
for i in range(n):
do_sth()
И другое:
i = 0
while i < n:
do_sth()
i += 1
Мой вопрос - какой из них лучше. Конечно, первый, который очень распространен в примерах документации и различных фрагментах кода, которые вы можете найти в Интернете, намного более изящный и короче, но, с другой стороны, он создает совершенно бесполезный список целых чисел, их. Разве это не пустая трата памяти, особенно в отношении большого количества итераций?
Как вы думаете, какой способ лучше?
Ответы
Ответ 1
но, с другой стороны, он создает абсолютно бесполезный список целых чисел, чтобы перебирать их. Разве это не пустая трата памяти, особенно в отношении большого количества итераций?
Вот для чего xrange(n)
. Он избегает создания списка чисел и вместо этого предоставляет объект итератора.
В Python 3, xrange()
был переименован в range()
- если вам нужен список, вам нужно запросить его через list(range(n))
.
Ответ 2
Это более легкий вес, чем xrange
(и цикл while), поскольку даже создавать объекты int
даже не нужно. Он также хорошо работает в Python2 и Python3
from itertools import repeat
for i in repeat(None, 10):
do_sth()
Ответ 3
Фундаментальное различие в большинстве языков программирования заключается в том, что если только не произойдет неожиданное событие, цикл for
будет всегда повторять n
раз, а затем закончить с помощью цикла while
, он может повторить 0 times, 1, more or even forever
, в зависимости от заданного условия, которое всегда истинно в начале каждого цикла и всегда ложно при выходе из цикла (для полноты цикла do ... while
(или repeat until
) для языков, имеющих его, всегда выполняется по крайней мере один раз и не гарантирует условия при первом выполнении).
Итак, ответ на ваш вопрос: "все зависит от того, что вы пытаетесь сделать"!