python之map、reduce函数小试

来源:转载

摘自廖雪峰老师教程中的一段代码

>>> def fn(x, y):... return x * 10 + y...>>> def char2num(s):... return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]...>>> reduce(fn, map(char2num, '13579'))13579

其中return{}[] 起到把字符串中的字符转化成int类型的作用。
{ }是字典,[ ]是list,{‘0’:0,…}[‘0’]取出来的就是数字0。

  • map函数是一个高阶函数,用于将函数作用于list的每一个元素上并生成一个新的list
  • reduce函数把函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

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

>>> def da(x):... return(x[0].upper()+x[1:].lower())... >>> map(da,['adam','LISa','barT'])['Adam', 'Lisa', 'Bart']>>> 

上网百度一下,发现python自带能实现该功能的函数capitalize(),用法为
str.capitalize()

>>> def da1(x):... return x.capitalize()... >>> map(da1,['adam', 'LISA', 'barT'])['Adam', 'Lisa', 'Bart']>>> 

练习2

>>> def pord(x,y):... return x*y>>> reduce(pord,[1,2,3,4])24>>>

lambda匿名函数

只能有一个表达式
当把lambda作为返回值时,调用所定义的函数时需要修改形式,如下:

>>> def build(x,y):... return lambda:x*x+y*y... >>> build(2,3)<function <lambda> at 0x1073692a8>>>> build(2,3)()13

分享给朋友:
您可能感兴趣的文章:
随机阅读: