lambda关系式常见来申明匿名函数,即沒有涵数名称的临时性应用的小涵数。lambda关系式只能够包括一个关系式,不允许包括别的繁杂的句子,但在关系式中能够获取别的涵数,并适用初始值主要参数和重要主要参数,该关系式的数值等同于涵数的传参。下边的编码演试了各种状况下lambda关系式的运用。
>>> f = lambda x, y, z: x y z #把lambda关系式作为涵数应用 >>> print(f(1, 2, 3)) 6 #应用lambda关系式界定含有初始值主要参数的涵数 >>> g = lambda x, y=2, z=3: x y z >>> print(g(1)) 6 #启用时应用重要主要参数 >>> print(g(2, z=4, y=5)) 11 >>> L=[(lambda x: x**2), (lambda x: x**3), (lambda x: x**4)] >>> print(L[0](2), L[1](2), L[2](2)) 4 8 16 #lambda关系式能够做为词典的“值” >>> D={'f1':(lambda: 2 3), 'f2':(lambda: 2*3), 'f3':(lambda: 2**3)} >>> print(D['f1'](), D['f2'](), D['f3']()) 5 6 8 >>> L=[1, 2, 3, 4, 5] #没有名字的lambda关系式,做为函数调用 >>> print(map((lambda x: x 10), L)) [11, 12, 13, 14, 15] >>> L [1, 2, 3, 4, 5] >>> def demo(n): return n*n >>> demo(5) 25 >>> a_list = [1, 2, 3, 4, 5] #在lambda关系式中能够获取别的涵数 >>> map(lambda x: demo(x), a_list) [1, 4, 9, 16, 25] #转化成20个数,0-19 >>> data = list(range(20)) >>> print(data) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> import random #任意弄乱次序 >>> random.shuffle(data) >>> data [4, 3, 11, 13, 12, 15, 9, 2, 10, 6, 19, 18, 14, 8, 0, 7, 5, 17, 1, 16] #应用lambda关系式特定排列标准 >>> data.sort(key=lambda x: len(str(x))) >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] #应用lambda关系式特定排列标准 >>> data.sort(key=lambda x: len(str(x)), reverse=True) >>> data [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> from random import randrange #应用列表推导式转化成7行5列二维任意数据信息 #每一个数据在[1,10)范畴内 >>> lst = [[randrange(1, 10) for i in range(5)] for j in range(7)] >>> for item in lst: print(item) [9, 9, 5, 6, 7] [7, 3, 5, 5, 6] [3, 5, 3, 5, 3] [4, 7, 6, 9, 8] [6, 4, 1, 4, 1] [9, 7, 8, 9, 4] [9, 1, 8, 6, 9] #*按第三列由小到大排列 #第三列一样的按第5列由小到大排列 >>> lst.sort(key=lambda item: (item[2], item[4])) >>> for item in lst: print(item) [6, 4, 1, 4, 1] [3, 5, 3, 5, 3] [7, 3, 5, 5, 6] [9, 9, 5, 6, 7] [4, 7, 6, 9, 8] [9, 7, 8, 9, 4] [9, 1, 8, 6, 9]