高阶函数:把函数当作参数进行传递;
map()函数:第一个参数为自定义函数,第二个参数为一个可迭代对象
lt = (1, 2, 3, 4, 5)
def f2(x):
return x*x
m1 = 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 + y
print(reduce(f, [1, 2, 3, 4, 5], 10))
25filter函数:每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素;如果返回为false则不保留该元素。
a = [1, 2, 3, 4, 5]
def is_old(x):
return x%2 == 1
print(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 i
for 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 + y
print sum(7, 8)
\\这里使用两种不同的方法来定义加法的函数
m = lambda x, y: x+y
print(m(4, 5))
159