python学习-Day14-高阶函数

来源:互联网 发布:iphone搞怪视频软件 编辑:程序博客网 时间:2024/06/06 13:08

高阶函数:把函数当作参数进行传递

map()函数:第一个参数为自定义函数,第二个参数为一个可迭代对象

lt = (1, 2, 3, 4, 5)def f2(x):    return x*xm1 = map(f2, lt)print (type(m1))print (m1)
<type 'list'>
[1, 4, 9, 16, 25]

reduce()函数:传入的函数必须接受两个元素;把可迭代对象的前两个参数作为函数的实参,传入到f函数中;把每次f运算结果作为第一个实参,可迭代对象的下一个元素作为另一个实参传入函数f中,以此类推最终得到结果
def f(x, y):    return x + yprint(reduce(f, [1, 2, 3, 4, 5], 10))
25

filter函数:每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素;如果返回为false则不保留该元素。
a = [1, 2, 3, 4, 5]def is_old(x):    return x%2 == 1print(is_old(5))\\这里返回结果来判断是否保留元素print(filter(is_old, a))
True
[1, 3, 5]


在知道某个方法或变量则可以进行查询源码的方式,来查看使用方法。eg:help(sorted)
sorted()函数:对字典进行排序。
mm = dict(a=1, b=10, c=3, d=9)print(mm)print(dir(mm))      \\查看字典相关的方法for i in mm:    print ifor j in mm.iteritems():    print(j)test = sorted(mm.iteritems(), key=lambda d: d[1])print test
{'a': 1, 'c': 3, 'b': 10, 'd': 9}
a
c
b
d
('a', 1)
('c', 3)
('b', 10)
('d', 9)
[('a', 1), ('c', 3), ('d', 9), ('b', 10)]

留疑:如果以key为顺序排序呢,即结果为:[('a', 1),('b', 10),('c', 3),('d',9)]呢?

匿名函数:没有名字的函数,用来快速定义函数。

def sum(x, y):    return x + yprint sum(7, 8)\\这里使用两种不同的方法来定义加法的函数m = lambda x, y: x+yprint(m(4, 5))
15
9

原创粉丝点击