【问题标题】:I'm trying to figure out how increment for loop in powers of 2我试图弄清楚如何以 2 的幂为循环递增
【发布时间】:2020-05-03 14:20:49
【问题描述】:

我习惯于用 C 编写代码,但我目前被困在 python 中的 for 循环中。
在 C 中,for 循环类似于 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 中的一行中做些什么来使其工作。
我确定我遗漏了一些非常简单的东西。请帮忙!谢谢!

【问题讨论】:

  • 你应该使用一个叫做 range 的函数
  • this 没有回答您的问题吗?

标签: python for-loop


【解决方案1】:

这应该可以正常工作:

>>> for i in range(15) :
...     print 1 << i, 
... 
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
>>> 

【讨论】:

    【解决方案2】:

    在 Python 中,它会这样写:

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

    查看https://wiki.python.org/moin/ForLoop 了解更多其他示例。

    【讨论】:

    • i**2 无效。你实际上并没有更新 i。
    【解决方案3】:

    使用 while 循环来做到这一点:

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

    输出:

    1
    2
    4
    8
    16
    32
    64
    128
    256
    512
    1024
    

    【讨论】:

    • this 的输出和 C 版本不太一样,C 的输出应该是 1,2,4,8,16……但是在这种情况下我更新了两次
    【解决方案4】:

    问题更新后的新答案:

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

    使用 for 循环,您可以提供一个 iterable,每次迭代都会从中选择值。它不像 C 中的索引 i 被修改。因此,要在 Python 中实现相同的功能,您需要创建一个包含所有值的可迭代对象。

    这会产生所需的:

    1
    2
    4
    8
    16
    32
    64
    128
    etc
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2023-03-25
      相关资源
      最近更新 更多