map()函数

Python内建了map()和reduce()函数。map()函数接收两个参数,第一个是函数,第二个是Iterable(可迭代对象,可直接作用于for循环的对象),map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator(迭代器)返回。

from collections.abc import Iterable
def fun(n):
  return n*n
a=map(fun,[1,2,3,4])
print(a)
print(list(a))
print(isinstance(a,Iterable))

map()传入的第一个参数是fun,即函数对象本身。由于结果a是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。

reduce()函数

reduce把一个函数作用在一个序列(字符串、列表、元组、集合和字典)上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

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

我们可以使用这种方式把一个序列转换为整数:

from functools import reduce
def fun(x,y):
  return x*10+y
print(reduce(fun,[1,2,3]))

发表评论

后才能评论