python函数做参数

来源:互联网 发布:linux vim查看行数 编辑:程序博客网 时间:2024/04/28 23:48

2.3利用add(x,y,f)函数,计 算

import mathdef add(x, y, f):    return f(x) + f(y)print add(25, 9, math.sqrt)

2.4.map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

     假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:

输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']

def format_name(s):    return s[0][0].upper() + s[1:].lower()print map(format_name, ['adam', 'LISA', 'barT'])
(python3中输出:print (list(map(format_name, ['adam', 'LISA', 'barT']))
2.5任务

Python内置了求和函数sum(),但没有求积的函数,请利用reduce()来求积:(python3中无法直接使用:from functools import reduce)

输入:[2, 4, 5, 7, 12]输出:2*4*5*7*12的结果

def prod(x, y):    return x*yprint reduce(prod, [2, 4, 5, 7, 12])

2.6、filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:

def is_not_empty(s):    return s and len(s.strip()) > 0filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])

2.7、sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

      请利用sorted()高阶函数,实现忽略大小写排序的算法。

输入:['bob', 'about', 'Zoo', 'Credit']
输出:['about', 'bob', 'Credit', 'Zoo']

def cmp_ignore_case(s1, s2):    u1 = s1.upper()    u2 = s2.upper()    if u1 < u2:        return -1    if u1 > u2:        return 1    return 0print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

2.8、返回函数:请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。

def calc_prod(lst):    def lazy_prod():        def f(x, y):            return x * y        return reduce(f, lst, 1)    return lazy_prodf = calc_prod([1, 2, 3, 4])print f()


2.9使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码:
sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y))[9, 5, 3, 1, 0]


2.15

functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值

import functoolssorted_ignore_case = functools.partial(sorted,cmp=lambda s1,s2:cmp(s1.lower(),s2.lower()))print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])


                                             
0 0
原创粉丝点击