2015-11-21 3 views
1

Я играл с Python 2.7 и хотел знать, был ли чистый способ закодировать эквивалент Python этого цикла Java (где вы можете изменить значение приращения в цикле):Изменение значения инкремента в цикле

for (int i = 1; i <= 64; i *= 2) { 
    # i = 1, 2, 4, 8, 16, 32, 64 
} 

Похоже, в Python можно использовать range(), но вы можете получить только каждый п-й элемент (например for i in range(1, 65, 2) получит вас каждый нечетный элемент).

+1

Не совсем дубликат, но вы можете найти ОБСУЖДЕНИЕ на [этот вопрос] (http://stackoverflow.com/questions/26645240/multiple-loop-control-variables-in-python-for-loop). – BrenBarn

ответ

2

Java для циклов отличается от Python. Вы используете цикл while для того же эффекта.

i = 1 
while (i<=64): 
    print(i) 
    i*=2 

Иначе вы можете реализовать свою собственную функцию диапазона с помощью настраиваемого генератора

>>> def my_own_range(n): 
...  i = 1 
...  while(i<=n): 
...   yield(i) 
...   i*=2 
... 
>>> for i in my_own_range(64): 
...  print(i) 
... 
1 
2 
4 
8 
16 
32 
64 
Смежные вопросы