2014-01-28 25 views
-2
def map_twos(): 
    def pwr(x): 
     return 2**x 
    map(pwr, range(0, 100)) 
    print pwr.get[2] 
    return pwr 

什麼是錯的。我不知道如何使用地圖功能來獲得所需的答案如何使用python map函數生成兩個從0開始的100個冪,並且不包括100?

+0

你需要具體地圖嗎? –

+0

是的。我需要使用地圖 – user3195981

+1

來解決這個問題,請閱讀map的文檔,它不能在原地執行,也不能在其他地方轉換函數。 – njzk2

回答

2

pwr是一個函數。即使將其映射到列表中,pwr仍然是一個函數。 map(pwr, range(0, 100))是你想要的清單。您可以將其存儲在一個變量:

powers = map(pwr, range(0, 100)) 
print powers[2] 
return powers 
+2

對於Python3用戶來說,'map'返回一個地圖對象,而不是一個列表,所以這裏的下標不起作用。在你的情況下,使用'powers = list(map(pwr,range(0,100)))' –

+0

@iCodez,這就是爲什麼我直接在「Python3用戶」中直接發表評論的原因。這絕不意味着對OP的建議 –

0

map不修改現有列表或功能,而是對結果產生迭代(Python 3中)。這意味着您需要存儲map的結果並最終將其轉換爲您需要獲取第n個元素(在Python 3中)的list

pwrs = map(lambda n: 1 << n, xrange(100)) 
print pwrs[2] 

從使用我想你使用Python 2 print語句的,所以我離開了顯式轉換爲list和使用xrange它返回一個迭代器(導致更好的性能)。在Python 3中,xrange不再存在,而range總是返回一個迭代器。另請注意,我如何在range函數上排除了下邊界,因爲它默認爲0.代替預定義函數,我在此使用了lambda,而這又使用了按位左移,因爲它通常比使用**(功率)運營商。

相關問題