# ### reduce ''' reduce(func,iterable) 功能:计算 先把iterable中的前两个数据拿出来,扔到func当中, 进行计算,把计算的结果在和iterable当中的第三个数据扔到func中 进行计算, 依次类推... ... 直到iterable中的数据全都拿出来为止. 参数: func: 内置函数 或者 自定义函数 iterable:可迭代性数据(常用:容器类型数据,range对象,迭代器) 返回值: 计算最终的结果 ''' # [5,4,8,8] => 5488 # 方法一 lst = [5,4,8,8] strvar = '' for i in lst: strvar += str(i) print(strvar,type(strvar)) res = int(strvar) print(res,type(res)) # 方法二 ''' 5*10 + 4 = 54 54*10 + 8 = 548 548*10 + 8 = 5488 ''' lst = [5,4,8,8,1,2,3,4] it = iter(lst) num1 = next(it) # 5 num2 = next(it) # 4 total = num1 * 10 + num2 print(total) for i in it: total = total * 10 + i print(total,type(total)) # 使用reduce实现 # from ..import 从哪个模块 ... 导入 ... # functools是一个模块(文件) from functools import reduce lst = [5,4,8,8] def func(x,y): return x*10+y res = reduce(func,lst) print(res) ''' 首先把5,4拿到func函数当中,进行运算得到54 然后把54和lst当中的第三个元素8拿到func当中进行运算得到548 然后把548和list当中的第四个元素8拿到func当中进行运算得到5488 到此,所有数据运算完毕,返回5488 ''' # "987" => 987 (不让使用int类型强转) def func(x,y): return x*10+y # ["9","8","7"] res = reduce(func,"987") print(res) # '9999999999899999999998999999999989999999999899999999998999999999987' # "987" => [9,8,7] def func2(n): dic = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9} return dic[n] it = map(func2,"987") # print(list(it)) res = reduce(func,it) print(res,type(res))