python 学习之 map&reduce方法

map()函数:接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
举例:


>>> a=map(int,'456621')
>>> a
<map object at 0x0000020F86336C88>
>>> list(a)
[4, 5, 6, 6, 2, 1]
格式map(f,iterable)

reduce()函数:把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

上面来自廖雪峰老师网站
将英文的人名修改为首字母大写,其它字母小写:
例如:[‘lisa’,‘HHHH’,‘jKhf’,‘dhaL’]

def  normalize(name):
    return name.capitalize()      #capitalize方法:将单词的第一个字母变成大写其余小写

L1=['lisa','HHHH','jKhf','dhaL']
L2 = list(map(normalize, L1))
print(L2)

其余的:
str.upper() # 把所有字符中的小写字母转换成大写字母
str.lower() # 把所有字符中的大写字母转换成小写字母
str.capitalize() # 把第一个字母转化为大写字母,其余小写
str.title() # 把每个单词的第一个字母转化为大写,其余小写

用reduce写一个函数接受一个列表,计算元素的乘积:

from functools import reduce
def prod(L):
    return reduce(lambda x, y: x * y, L)
>>>prod([1,2,3,4])
24

将一个数字组成的字符串转换为浮点数:

from functools import reduce
def str2float(s):
    DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    def char2num(s):
        return DIGITS[s]
    l= s.split('.')                                                                  #将字符串分为小数点前和后
    s1 = l[0]                                                                      
    s2 = l[1]
    a=reduce(lambda x, y: x * 10 + y, map(char2num, s1))             #计算小数点前的值
    b=reduce(lambda x, y: x * 0.1 + y, map(char2num, s2[::-1]))    #计算小数点后的值
    return a+0.1*b

 >>>str2float('3.1415')
 3.1415
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明杀鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值