python练习之map()和reduce()函数

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']

 1 def normalize(name):
 2     name=name.lower()
 3     name=name[0].upper()+name[1:]
 4     return name
 5 
 6 
 7 
 8 
 9 
10 # 测试:
11 L1 = ['adam', 'LISA', 'barT']
12 L2 = list(map(normalize, L1))
13 print(L2)

感想:原来字符串也可以用类似列表的方式调用!哈哈!

Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:

1 from functools import reduce
2 
3 
4 def prod(L):
5     return reduce(lambda x, y: x * y, L)
6 
7 
8 print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))

感想:Lambda函数大法好!

 

利用mapreduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456

思路:先转换成列表形式,利用列表的下标找到小数点的位置,在将列表转换为数字(浮点型)

 

 1 def str2float(s):
 2     l = []
 3     if s[0] == ".":  # 当字符串第一位是"."时的处理方法,简直666
 4         s = "0" + s
 5     for n in range(0, len(s)):
 6         l.append(s[n])
 7         if s[n] == ".":
 8             k = n
 9     p = len(l) - k - 1  # p代表小数点的位数
10     del l[k]
11     return int(reduce(lambda x, y: x + y, l)) * 10 ** (-p)
12 
13 
14 print(str2float("123.456"))
15 print('str2float(\'123.456\') =', str2float('123.456'))

 

转载于:https://www.cnblogs.com/gilgamesh-hjb/p/7562526.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值