首页 > 解决方案 > Python for 循环范围与时间而不是添加索引

问题描述

有没有更简单的方法可以在C++as中实现以下代码Python

for(long a = 1; a <= INT_MAX; a*=2)
    for(long b = a; b <= INT_MAX; b*=2)
        for(long c = b; c <= INT_MAX; c*=2)

我只能重写为while循环,因为 Python 似乎不支持它。

喜欢

a = 1
while(a <= INT_MAX):
  b = a
  while(b <= INT_MAX):
    c = b
    while(c <= INT_MAX):
      c *= 2
    b *= 2
  a *= 2

我很难读到这篇文章,想知道是否有更好的方法来实现它。

标签: pythonloops

解决方案


如果将其分解到生成器中,它会更好读。

def geometric_range(start, end, step):
    n = start
    while n < end:
        yield n
        n *= step

for a in geometric_range(1, INT_MAX + 1, 2):
    for b in geometric_range(a, INT_MAX + 1, 2):
        for c in geometric_range(b, INT_MAX + 1, 2):
            pass # or whatever

推荐阅读