Я пытаюсь выяснить, как прирост для l oop в степени 2 - PullRequest
0 голосов
/ 03 мая 2020

Я привык кодировать в C, и в настоящее время я застрял на для l oop в python.
В C для l oop выглядит как for(int i, i<=1024,i*=2){} .
Я пробовал for i in range(1,1024,*2), но, похоже, он не принимает *
В настоящее время я использую

Distance = 1
increment = 2
SearchRange = 1024
while Distance<SearchRange:
  Distance *=increment

для достижения аналогичных результатов, могу ли я что-нибудь сделать в одна строка в python, чтобы все заработало.
Я уверен, что упускаю что-то очень простое. Пожалуйста, помогите! Спасибо!

Ответы [ 4 ]

0 голосов
/ 03 мая 2020

Новый ответ после обновления вопроса:

iterable_range = [ 2**j for j in range(0,1024) ]
for i in iterable_range:
    print(i)

Используя a для l oop, вы предоставляете iterable, из которого значение выбирается на каждой итерации. Это не похоже на C, где индекс i изменен. Таким образом, чтобы добиться того же в Python, вам нужно создать итерируемое из всех значений.

Это даст желаемое:

1
2
4
8
16
32
64
128
etc
0 голосов
/ 03 мая 2020

В Python было бы написано:

for i in range(1024):
    i*=2

Проверьте https://wiki.python.org/moin/ForLoop для множества других примеров.

0 голосов
/ 03 мая 2020

Это должно работать просто отлично:

>>> for i in range(15) :
...     print 1 << i, 
... 
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
>>> 
0 голосов
/ 03 мая 2020

Для этого используются циклы while:

step = 1
i = 1
while i <= 1024:
    print(i)
    i *=2

Вывод:

1
2
4
8
16
32
64
128
256
512
1024
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...