利用map 和reduce 函式例項

2021-08-15 18:58:41 字數 2604 閱讀 9265

#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]

print

'最終結果:',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')

print

'公升級版:',res

res = int('2222')

print

'公升級版:',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...