Python---函数式编程lambda表达式、map、reduce、filter

文章内容:

1.lambda表达式在python中的体现
2.如何调用匿名函数
3.三元表达式
4.如何将for循环用map代替写出来
5.利用reduce连续调用lambda
6.filter过滤,数据清洗

def add(x,y):
    return x+y
"""
lambda表达式
匿名函数
用匿名函数代替上面函数表示
lambda parameter_list:expression
"""
f=lambda x,y:x+y#冒号后面只能是表达式,非常适合使用三元表达式去写if/else逻辑
"""
调用函数
"""
print(add(4,5))#9
"""
如何调用匿名函数
"""
print(f(5,6))#11

"""
三元表达式
x>y?x:y
"""
x=4
y=5
r=x if x>y else y
print(r)#5

####################################################################
"""
map
映射
简单地来说就是一个映射
"""
list_x=[1,2,3,4,5,6,7,8,9]

def f1(x):
    return x*x
"""
for x in list_x:
    f1(x)
可以用map代替写出来
"""
r=map(f1,list_x)
print(r)#<map object at 0x000000000BB93470>是一个对象
print(list(r))#[1, 4, 9, 16, 25, 36, 49, 64, 81]

###################################################################
"""
map与lambda
"""
list_x=[1,2,3,4,5,6,7,8,9]

def f1(x):
    return x*x

r=map(f1,list_x)
print(r)#<map object at 0x000000000BB93470>是一个对象
print(list(r))#[1, 4, 9, 16, 25, 36, 49, 64, 81]
"""
map中的f1函数完全可以用lambda表达式写出来
"""
list_x=[1,2,3,4,5,6,7,8,9]

r=map(lambda x:x*x,list_x)
print(list(r))#[1, 4, 9, 16, 25, 36, 49, 64, 81]

"""
list_x
list_y
"""
list_x=[2,3,4]
list_y=[5,6,7]

r=map(lambda x,y:x*x+y,list_x,list_y)
print(list(r))#[9, 15, 23]

#特殊情况1
list_x=[2,3,4]
list_y=[5,6]

r=map(lambda x,y:x*x+y,list_x,list_y)
print(list(r))#[9, 15]

#特殊情况1
list_x=[3,4]
list_y=[5,6,7]

r=map(lambda x,y:x*x+y,list_x,list_y)
print(list(r))#[14, 22]

###################################################################
"""
map
映射
reduce
归约
连续计算,连续调用lambda
"""
from functools import reduce

list_x=[1,2,3,4,5]
r=reduce(lambda x,y:x+y,list_x)
print(r)#15
#(((1+2)+3)+4)+5

list_x=['1','2','3','4','5']
r=reduce(lambda x,y:x+y,list_x,'abc')
print(r)#abc12345

list_x=['1','2','3','4','5']
r=reduce(lambda x,y:x+y,'abc',list_x)
print(r)
#TypeError: can only concatenate list (not "str") to list

######################################################################
"""
filter
过滤
"""
#把数值为0的过滤掉
list_x=[1,0,2,5,0,0,6,0]
r=filter(lambda x:True if x!=0 else False,list_x)
print(r)#<filter object at 0x000000000BB5A6D8>
print(list(r))#[1, 2, 5, 6]

list_x=[1,0,2,5,0,0,6,0]
r=filter(lambda x:x,list_x)
print(list(r))#[1, 2, 5, 6]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值