map()
函数
接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
map()函数能够简化编程
reduce()函数
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
>>> from functools import reduce
>>> def fn(x, y):
... return x * 10 + y
...
>>> def char2num(s):
... digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
... return digits[s]
...
>>> reduce(fn, map(char2num, '13579'))
13579
reduce()函数
reduce (func, seq[, init()])
reduce()函数是重复迭代函数,它的执行过程为:每一次迭代,都将上一次的迭代结果与序列中的下个数值作为函数的输入
init是可选的,如果指定,则作为第一次迭代使用,如果没有指定,就取seq中的第一个元素。
利用map
和reduce
编写一个str2float
函数,把字符串'123.456'
转换成浮点数123.456
:
from functools import reduce
def str2float(s):
loc = s.find('.')
s1 = s.replace('.','')
num = reduce(fn, map(char2num, s1))
for n in range(len(s)-loc-1):
num = num/10.0
return num
def char2num(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
return digits[s]
def fn(x, y):
return x * 10 + y
参考来源:https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080