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 循環(huán)。話雖如此,我認為如果將范圍與 python 的生成器理解結合使用,您會發(fā)現(xiàn)使用范圍會非常靈活。
for index in (i*2 for i in range(1,size)): print(index)
我覺得這有點更優(yōu)雅,因為你不需要擔心記住有一個條件,i<size*2
因為乘法與迭代數(shù)字 1 -> size 是分開的。
我在這里建議使用生成器,因為它最接近您想要在 Java 中實現(xiàn)的精神,而無需訴諸 while 循環(huán),涉及列表理解的解決方案將首先為您的整個范圍創(chuàng)建一個數(shù)字列表,然后迭代該列表,在我看來,這與您試圖模仿的不同。我希望這有幫助!
編輯:關于生成器表達式的文檔,以防您不熟悉https://docs.python.org/3/reference/expressions.html#generator-expressions

TA貢獻1784條經驗 獲得超2個贊
您可以改用 while 循環(huán):
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
添加回答
舉報