博客园 首页 联系 订阅 管理

一、匿名函数

# 匿名函数 lambda的命名格式
# lambda 参数列表: 表达式
# lambda parameter_list: expression
def add(x, y): return x + y
# 可以将lambda定义的匿名函数,赋值给一个变量 # 这样的话就可以像普通函数一样,但这样是没有意义的 fun = lambda x, y: x + y print(add(1, 2)) # 3 print(fun(1, 2)) # 3

二、python中的三元表达式

# python中的三元表达式
# 格式如下
# 条件为真是返回的结果 if 条件判断 else 条件为假是返回的结果
x = 1
y = 2
# 在PHP中的格式为:r = x > y ? x : y;
r = x if x > y else y
print(r)  # 2

三、python中map()

# python中的map类
# map(表达式(可以是一个函数), 序列)
def add(x):
     return x ** 2
list_x = [1, 2, 3, 4, 5, 6]
list_y = [1, 4, 9, 16, 25, 36, 49]
# res = map(add, list_x)  # 与下边相同
res = map(lambda x: x * x, list_x)
print(res)  # 是一个map对象<map object at 0x00000211FF7F9208>
print(list(res))  # [1, 4, 9, 16, 25, 36]

# 使用lambda和map传入多个参数
res1 = map(lambda x, y: x + y, list_x, list_y)
# 当list_x与list_y的参数数量不想等的时候,以短的数量为准
print(list(res1))  # [2, 6, 12, 20, 30, 42]

四、python中filter()

# python中的filter类
# 表示的是过滤器,调用表达式返回的是bool值
list_x = [1, 0, 3, 0, 5, 0]
res = filter(lambda x: x, list_x)
# 也可以使用三元表达式
# res = filter(lambda x: False if x == 0 else True, list_x)
print(list(res))  # [1, 3, 5]

五、python中的reduce()函数

from functools import reduce
# python中的reduce()函数
# 连续计算,连续调用lambda
list_x = [1, 2, 3, 4, 5, 6]
list_y = ['1', '4', '9', '16', '25', '36', '49']
# reduce是连续来调用的,初始的时候是x=1,y=2,在再一次调用lambda的时候
# 将第一次调用结果付给x,而y此时去序列中接下来的值
# 类似于这样:((((1+2)+3)+4)+5)+6
res = reduce(lambda x, y: x + y, list_x)
print(res)  # 21
res1 = reduce(lambda x, y: x + y, list_y, '**')  # 第三个参数代表的是初始值
print(res1)  # **14916253649