python把函数作为参数

python把函数作为参数
import math
 
def add(x, y, f):
    return f(x) + f(y)
 
print add(25, 9,math.sqrt)
 
python中map()函数的应用。将首字母大写,其他的小写
def format_name(s):
    return s.capitalize()
    #return s[0].upper()+s[1:].lower()
print map(format_name,['admin','LiSa','kILL'])
 
python中reduce()函数的应用
reduce和map函数相似,但是他只能传入两个参数与map的多个有区别,他还有迭代的功能呢!
def muil(x,y):
    return x*y
print reduce(muil,[1,2,3,4])
 
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
def is_odd(x):
    return  x%2==1
filter(is_odd,[1,3,2,9])
利用filter除去None和空字符串
def is_not_empty(s):
    return s and len(s.strip())>0
filter(is_not_empty,['test',None,'    '])
 
 
Python内置的 sorted()函数可对list进行排序:【但是仅仅实行的顺序排序,但是逆序却是另一个函数】我们今天写的就是另一种函数的功能。
对于比较函数cmp_ignore_case(s1, s2),要忽略大小写比较,就是先把两个字符串都变成大写(或者都变成小写),再比较。
参考代码:
def cmp_ignore_case(s1, s2):
    u1 = s1.upper()
    u2 = s2.upper()
    if u1 < u2:
        return -1
    if u1 > u2:
        return 1
    return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
 
 
我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数:functools.partial是隐形的创建一个新函数。
要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。
参考代码:
import functools
sorted_ignore_case = functools.partial(sorted, cmp=lambda s1, s2: cmp(s1.upper(), s2.upper()))
print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])
 
原文地址:https://www.cnblogs.com/topass123/p/12923323.html