可能重複:
How to return a list of numbers of the power of 2?我需要的是一個正整數(n)的啓動函數,並返回2的冪的列表,從2
我所知道的是:
l = []
for i in range(2, n=2):
l.append(1**2)
return l
我不需要有一個完整的等式,我只需要知道如何做這樣的等式的基礎知識。
可能重複:
How to return a list of numbers of the power of 2?我需要的是一個正整數(n)的啓動函數,並返回2的冪的列表,從2
我所知道的是:
l = []
for i in range(2, n=2):
l.append(1**2)
return l
我不需要有一個完整的等式,我只需要知道如何做這樣的等式的基礎知識。
像這樣的事情?
def powers(n):
return [2**i for i in range(1, n+1)]
這是同樣的方式,但使用for循環:
def powers(n):
l = []
for i in range(1, n+1):
l.append(2**i)
return l
SNIPPIT你上面貼有以下原因沒有工作代碼:
l.append(1**2)
- 這是一個到第二電源,這將永遠等於一個。你大概的意思做l.append(2**i)
,這是2的變量i
您使用的範圍不正確。有幾種方法可以做到的範圍
範圍(停止)#開始默認爲0
範圍(啓動,停止)
範圍(啓動,停止,步驟)#如果沒有指定,一步默認爲1
感謝您的幫助! –
您的意思是?
def get_powered_vals(endVal):
return [2**val for val in xrange(endVal+1)]
get_powered_vals(4)
>>> [2,4,8,16]
或者沒有列表理解:
def get_powered_vals(endVal):
vals = []
for val in xrange(endVal+1):
vals.append(2**val)
print val, vals[-1]
return vals
get_powered_vals(4)
>>> 1, 2
>>> 2, 4
>>> 3, 8
>>> 4, 16
>>> [2,4,8,16]
雖然list comp可能是這樣做的方式,但您可能希望顯示帶有list.append的顯式循環。如果OP不理解,那麼list-comp可能會問得太多。 – mgilson
@mgilson -sure加了,謝謝 –
我會試試這些,非常感謝 –
而是所有的低效冪的,只取最後計算出的值,並通過2
乘以它作爲一個功能:
>>> def powers(n):
... ret = [1]
... while len(ret) < n:
... ret += [ret[-1]*2]
... return ret
...
>>> powers(10)
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
作爲發電機:
>>> def gen_powers(n):
... last = 1
... while n:
... yield last
... last *= 2
... n -= 1
...
>>> list(gen_powers(10))
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
作爲代碼高爾夫球單行:
reduce(lambda a,b:a+[2*a[-1]],range(10),[1])
這是一個小曖昧;你想從2到n? 2到n^2?都不是? – jrajav
你的意思是做'l.append(i ** 2)'? – Michael0x2a
例如,使用4並嘗試在列表開始處找到以2開頭的2次冪的列表。EX:[2,4,8,16]應該是答案 –