lambda 函数,又称匿名函数(不需要指定函数名)。当我们需要定义一个函数时,又懒得写命名时时。就可以通过lambda实现。另外使得代码更加简洁。
匿名函数语法:
lambda(关键词):x,y,… (代表函数的入参):m(m代表返回值,即return m)
1 比如我们定义一个add函数
def add(x, y):
return x + y
改写成lambda的方式如下:
lambda_add = lambda x, y: x + y
print(lambda_add(1, 2)) # 3
print(add(1, 2)) # 3
# x为入口参数,x平方为函数体
m = lambda x : x ** 2
print(m(1)) # 1
print(m(2)) # 4
print(m(3)) # 9
# 无论入口参数为什么都会返回1
m = lambda x: 1
print(m('abc')) # 1
print(m(12)) # 1
# 输入任意多个数,求和
m = lambda *args : sum(args)
print(m(1, 2, 3)) # 6
m = lambda x : x if x < 10 else '-'
print(m(1)) # 1
print(m(5)) # 5
print(m(11)) # -
全局函数
在python中有几个已经定义好的全局函数供我们直接使用
1、sort函数。
对列表中的元素进行排序,默认升序排列。
sort(key=None, reverse=False)
# print([[6, 1], [3, 2], [9, 4], [(1, 5)]].sort(lambda x: x[0]))
# 按照二维列表的第一个元素进行排序
# [(1, 5), (3, 2), (6, 1), (9, 4)]
print(sorted([(6, 1), (3, 2), (9, 4), (1, 5)], key=lambda x: x[0]))
dict1 = {'c': 'v1', 'a': 'v2', 'b': 'v3'}
# 按照字典的键排序,如果按照值排序则lambda x: x[1] ,返回元组组成的列表
# [('a', 'v2'), ('b', 'v3'), ('c', 'v1')]
print(sorted(dict1.items(), key=lambda x: x[0]))
# 按照4-x的绝对值进行排序(离4距离的大小排序)
# [4, 3, 5, 2, 6, 1, 7]
print(sorted([1, 2, 3, 4, 5, 6, 7],key=lambda x: abs(4-x)))
2、filter函数。
用于过滤列表中符合条件的元素。
filter(function, Iterable)
# 过滤列表中能被2整除的--- 偶数
lst = filter(lambda x : x % 2 == 0, [1, 2, 3, 4, 5])
# [2, 4]
print(list(lst))
# 过滤能被3整除的数
# [3]
lst = filter(lambda x : x % 3 == 0, [1, 2, 3])
print(list(lst))
# 求 1- 100内的整数平方根
import math
lst = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list(lst))
3、map函数。
根据提供的函数对执行的序列做映射。
map(function, Iter)
# 对列表元素求平方
m = map(lambda x : x ** 2, [1, 2, 3, 4])
# [1, 4, 9, 16]
print(list(m))
# 两个列表,相同位置的元素相加
m = map(lambda x, y: x + y, [1, 2, 3, 5], [9, 8, 7, 5])
# [10, 10, 10, 10]
print(list(m))
# 将列表中的偶数值修改为0,奇数保持不变
m = map(lambda x : 0 if x % 2 == 0 else x, [9, 4, 1, 6, 8])
# [9, 0, 1, 0, 0]
print(list(m))