4 回答
TA贡献1829条经验 获得超6个赞
这是一种方法:
print(', '.join([str(2**i) for i in range(1, 10)]))
输出:
2, 4, 8, 16, 32, 64, 128, 256, 512
TA贡献1802条经验 获得超6个赞
在 python 中没有真正的等价物,而for i=1; i<x; i++
不必分解为使用 while 循环。话虽如此,我认为如果将范围与 python 的生成器理解结合使用,您会发现使用范围会非常灵活。
for index in (i*2 for i in range(1,size)): print(index)
我觉得这有点更优雅,因为你不需要担心记住有一个条件,i<size*2
因为乘法与迭代数字 1 -> size 是分开的。
我在这里建议使用生成器,因为它最接近您想要在 Java 中实现的精神,而无需诉诸 while 循环,涉及列表理解的解决方案将首先为您的整个范围创建一个数字列表,然后迭代该列表,在我看来,这与您试图模仿的不同。我希望这有帮助!
编辑:关于生成器表达式的文档,以防您不熟悉https://docs.python.org/3/reference/expressions.html#generator-expressions
TA贡献1784条经验 获得超2个赞
您可以改用 while 循环:
size = 129
index = 2
while index < size:
print(index)
index *= 2
或者你可以走得更远,定义一个生成器来更容易地做到这一点:
def powerloop(mn,mx,step):
while mn < mx:
yield mn
mn *= step
for i in powerloop(2, 129, 2):
print(i)
输出:
2
4
8
16
32
64
128
TA贡献1835条经验 获得超7个赞
terms=10
result = list(map(lambda x: 2 ** x, range(terms)))
for i in range(2,terms):
print(result[i])
输出
4
8
16
32
64
128
256
512
添加回答
举报