天天看點

五、函數_18.reduce()

reduce()

reduce(func, iterable ),
        功能:每次從iterable中取出兩個元素,放入func中處理
              然後把運算結果和iterable中的下一個元素再放入func中處理,以此類推,直至耗盡
        參數:func:函數
              iterable:可疊代對象
        傳回值:最終的運算結果
注:使用reduce()時,需要導入 from functools import reduce
           
批量處理資料
# 普通方法批量處理資料
varlist = [0, 7, 0, 6 ]
NoneStr = ''
for i in varlist :
    NoneStr += str(i)
print(NoneStr)

# reduce()處理
from functools import reduce

varlist1 = [0, 7, 0, 6 ]
varlist2 = ['0', '7', '0', '6' ]

# 方法一
def p(n, m) :
    return str(n) + str(m)
r = reduce(p,varlist1)
print(r, type(r))

# 方法二
r = reduce(lambda x, y : int(x)*10 + int(y), varlist2)
print(r,type(r))

# 方法三
varstr = '4560000789'

def s_l(n) :
    vardict = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    n = vardict[n]
    print(n)
    return n

p1 = map(s_l, varstr)
print(p1)

r = reduce(lambda x, y : x*10 + y, p1)
print(r,type(r))


0706
0706 <class 'str'>
706 <class 'int'>
<map object at 0x0000006D25040748>
4
5
6
0
0
0
0
7
8
9
4560000789 <class 'int'>