匿名函数
""" 高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便 匿名函数使用lambda定义: lambda x: x * x,就可以完成原来显式定义的f(x)函数的功能,冒号前面的x表示匿名函数的参数,后面的是一个表达式, 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果 """ # map()函数非匿名函数时: def f(x): return x * x l1 = [] for i in map(f, [1, 2, 3, 4, 5, 6]): l1.append(i) # print(l1) # map()函数匿名函数,计算 f(x)=x * x时,f(x)就是作为参数传入map的 l2 = [] for i in map(lambda x: x * x, [1, 2, 3, 4, 5, 6]): l2.append(i) # print(l2) # reduce()非匿名函数 from functools import reduce def a(x ,y): return x + y s = reduce(a, [1, 2, 3, 4, 5, 6]) # print(s) # reduce()匿名函数 s1 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5, 6]) # print(s1) # 练习:对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数和lambda匿名函数,实现忽略大小写排序的算法。 # 输入:['bob', 'about', 'Zoo', 'Credit'] # 输出:['about', 'bob', 'Credit', 'Zoo'] # 非匿名函数时 names = ['bob', 'about', 'Zoo', 'Credit'] def k(name): return name.lower() s2 = sorted(names, key=k) # print(s2) # 匿名函数 names = ['bob', 'about', 'Zoo', 'Credit'] s2 = sorted(names, key=lambda name: name.lower()) print(s2)