lists =[2,3,4]print(lists)defdata_add(x,y):return x+y
from functools importreduce
last =reduce(data_add,lists)print(last)
结果:9
x y x y
23549
1.用reduce求1~100的和
lists =[x for x inrange(101)]print(lists)defdata_add(x,y):return x+y
from functools importreduce
last =reduce(data_add,lists)print(last)
结果:5050
#方法一from functools importreducedefget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
defint1(strs):
data =list(map(get_num,strs))
result =reduce(get_result,data)return result
print(int1('23456789'))
结果:23456789
方法二
#方法二from functools importreducedefget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
defint1(strs):
data =list(map(get_num, strs))
result =reduce(get_result, data)return result
print(int1('185142035434'))
结果:185142035434
4.把字符串数字转成浮点型数字,实现int功能,可以用map()函数和reduce()函数
方法一
分析
# 1 8 5 1 4 2 0...## 1*10+8 =18# 18*10+5 = 185# 185*10+1 1851#方法一from functools importreducedefget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
deffloat1(strs):
data =list(map(get_num,strs))
result =reduce(get_result,data)return result
from decimal import Decimal #Decimal可以精确计算
strs ='1234.890'
data = strs.replace('.','')
dian_index = strs.find('.')
chazhi =10**(len(data)-dian_index)print(Decimal(float1(data))/chazhi)
结果:1234.89
方法二
#方法二from functools importreducedefget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
defint1(strs):
data =list(map(get_num,strs))
result =reduce(get_result,data)return result
from decimal import Decimal ##使结果更加精准
strs ='1234.890'
data = strs.replace('.','')
dian_index = strs.find('.')
chazhi =10**(len(data)-dian_index)print(Decimal(int1(data))/chazhi)
结果:1234.89
方法三
方法三
根据小数点把浮点数分成两半分别计算
from functools importreducefrom decimal import Decimal #使结果更加精准defget_num(n):
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return dicts[n]defget_result(x,y):return x*10+y
deffloat1(strs):
data =list(map(get_num, strs))
result =reduce(get_result, data)return result
dicts ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
strs ='183243242.3545645654654'
i = strs.split('.')[0]#根据小数点把浮点数分成两半分别计算
f = strs.split('.')[1]print(i,f)defget_data(x,y):return x*0.1+y
last =reduce(get_data,map(get_num,f[::-1]))print(float1(i)+Decimal(last)/10)
结果:
1832432423545645654654183243242.3545645654653999834
分析
# 4564565465453# 5.4# 5.3# 4.53