2012-11-14 37 views
1

可能重複:
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 

我不需要有一個完整的等式,我只需要知道如何做這樣的等式的基礎知識。

+0

這是一個小曖昧;你想從2到n? 2到n^2?都不是? – jrajav

+1

你的意思是做'l.append(i ** 2)'? – Michael0x2a

+0

例如,使用4並嘗試在列表開始處找到以2開頭的2次冪的列表。EX:[2,4,8,16]應該是答案 –

回答

1

像這樣的事情?

def powers(n): 
    return [2**i for i in range(1, n+1)] 

more info

這是同樣的方式,但使用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
  • 你有2開始你的範圍的權力,但你想,從1開始,這樣在你的列表中的第一項是2,而不是4
  • 您使用的範圍不正確。有幾種方法可以做到的範圍

    範圍(停止)#開始默認爲0
    範圍(啓動,停止)
    範圍(啓動,停止,步驟)#如果沒有指定,一步默認爲1

+0

感謝您的幫助! –

2

您的意思是?

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] 
+1

雖然list comp可能是這樣做的方式,但您可能希望顯示帶有list.append的顯式循環。如果OP不理解,那麼list-comp可能會問得太多。 – mgilson

+0

@mgilson -sure加了,謝謝 –

+0

我會試試這些,非常感謝 –

1

而是所有的低效冪的,只取最後計算出的值,並通過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]) 
相關問題