#coding:utf-8# 利用map()和reduce()函式,實現類似於int()的功能。
# '123' -->123
# 兩個步驟:
# 1>先將'123'字串中的每乙個字元'1','2','3'分別轉化成乙個數字;適合使用map()函式。
# 2>再將每乙個數字,1,2,3進行處理,最終得到整數123;適合使用reduce()函式。
def char_to_number(string):
all_number_dict =
# 以變數string為鍵,從all_number_dict中取出對應的值,即取出了整數型別的數字。
return all_number_dict[string]
res = map(char_to_number, '555')
# print res
def result_number(x,y):
res = x*10 + y
return res
result = reduce(result_number, res) #res = [1,2,3]
'最終結果:',result,type(result)
# 再次對上面的邏輯進行封裝,像使用int()函式簡單方便。
def int(s):
def char_to_number(string):
all_number_dict =
return all_number_dict[string]
def result_number(x,y):
return x*10 + y
return
reduce(result_number, map(char_to_number, s))
res = int('123')
'公升級版:',res
res = int('2222')
'公升級版:',res
#coding:utf-8# 將所有字串中的字元,全部轉化為小寫。即可以是乙個單獨的字串,也可以是乙個字串
列表。# 1>先使用map()函式,將字串中的每乙個字元轉化為小寫;
# 2>再使用reduce()函式,對map()函式返回的列表進行邏輯處理;
# 如果是乙個字串,需要使用map()和reduce()組合;
# 如果是乙個字串列表,只需要map()函式就可以了;
def custom_lower(s):
# char_lower函式是作用到map()函式的。
def char_lower(string):
# 將26個英文本母對應的小寫字母,在字典中進行定義。
all_char_dict =
# string形參,接收的是列表中的乙個字串,而不再是某乙個字元了。
# print '*****string = ', string
# 宣告乙個變數,用於記錄每一次字元轉化的結果
every_char_result = ''
# 宣告乙個變數,用於記錄最終轉化後的結果
result = ''
# 遍歷string字串,將其中的大寫字元,轉化成小寫。
for index in
xrange(0,len(string)):
char_str = string[index]
# 判斷獲取的當前字元是否是大寫字元,如果是則轉化;反之則不轉化
# isupper():字串內建方法,返回結果是bool型別的資料。
if char_str.isupper() == true:
# 以大寫字元為鍵,從字典中取出小寫字元。
every_char_result = all_char_dict[char_str]
else:
every_char_result = char_str
# 將轉化後的字元和沒有轉化的字元,再次進行拼接,最終成為乙個完整的字串,
並返回。
result += every_char_result
return result
# result_string函式是作用到reduce()函式的。
def result_string(x,y):
return x+y
# 判斷要轉化的字串是不是list型別的
# isinstance():用於判斷乙個變數是否屬於某一種型別,是則返回true,不是則返回
false。
if isinstance(s, list):
# 是list,只呼叫map()
return
map(char_lower, s)
else:
# 不是list,需要呼叫map()和reduce()
return
reduce(result_string, map(char_lower, s))
res = custom_lower('abcdef')
print res
res = custom_lower(['oppe', 'abcd', 'cddef'])
print res
map 函式和reduce 函式
map 函式 也稱對映物件函式,接受兩個引數,第乙個是函式,第二個是序列。map 將傳入的函式依次作用到序列的每個元素並把結果作為list返回。map返回的結果是乙個可迭代的map物件,可以使用 next 獲取值,也可使用for迴圈迭代獲取或者直接轉換為list獲取更加暴力。def demo x r...
map 函式和 reduce 函式
從引數方面來講 map 包含兩個引數,第乙個引數是乙個函式,第二個是序列 列表 或元組 其中,函式 即 map 的第乙個引數位置的函式 可以接收乙個或多個引數。reduce 第乙個引數是函式,第二個是序列 列表或元組 但是,其函式必須接收兩個引數。從對傳進去的數值作用來講 map 是將傳入的函式依次...
map函式和reduce函式
map 函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。def f x return x x r map f,1,2,3,4,5,6,7,8,9 list r 1,4,9,16,25,36,49,64,81 ma...