2016-01-07 1500 views
2
from functools import reduce 
def str2int(s): 
    def fn(x, y): 
     return x * 10 + y 
    def char2num(s): 
     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] 
return reduce(fn, map(char2num, s)) 

我正在學習函數map()和reduce()。 {...} [。]是什麼意思?{..} [..]是什麼意思?

回答

1

功能char2num將字符串更改爲其int值。例如,如果:

s = '0' 

它返回:

0 #int 

其實功能找到dictionary[s](與關鍵s),並返回其值是其int價值。

4

它只是意味着:構建一個詞典並從一個鍵返回一個特定的值。

print({'foo': 0, 'bar': 1}['foo']) # output : 0 
print({'foo': 0, 'bar': 1}['bar']) # output : 1 
1

{}[]意味着查字典特定鍵,如果該鍵被發現回報它,認爲這

str2int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7':7, '8': 8, '9': 9} 
get_3 = str2int['3'] 
print(get_3) 

>>> 3 

它基本上是一樣的分配字典的IDENTIFER /變量和訪問關鍵,如果你嘗試這種

get_3 = str2int['10'] 

你得到一個KeyError該特定鍵這麼想的字典中存在

作爲用於一般一般映射功能被用於應用的功能的操作,以可迭代

map(aFunction, aSequence) 

記得字符串蟒是iterables,所以映射返回相應的字典值

通過應用功能,可迭代減少的作品,直到它返回一個值(即此列表或可迭代減少到單個值)例如

因此,例如,如果你打電話給函數的字符串

str2int('234') 

映射經過並繪製字符串它在字典中的值,並返回一個列表

[2, 3, 4] 

後的減少需要前兩個參數爲x and y,適用何種操作x * 10 + y和電話它,直到它只是一個值,以便在第一次通話

2 * 10 + 3 = [23, 4] 
秒呼叫

23 * 10 + 4 = [234] 

所以我們現在有一個值,最終值234你可以用函數的內部邏輯功能的發揮結束回到習慣的概念