python中的lambda函数和map函数

这几天在回顾一下map和lambda函数,突然发现这两个有点好像,猪脑子就卡壳了。还是以前学的不牢啊!只好重新用自己的感想写这么一遍!

1、lambda函数

他就是个没有名字的函数,比如匿名信这种。我们能在某一函数参数条件中直接调用他、或者借用其返回的实体构成新的函数名 如下。

比如说  lambda x,y: x+y  就是说我的函数输入x,y,返回x+y

y=lambda a,b,c:a+b+c
print('\n',y(1,2,3))

结果为6

仔细看看,是不是y成为了新的函数名?!

 

2、map函数

map就是映射的意思,他肯定是将两种东西结合映射为某一个结果。他就是接收一个函数function和一个list列表,并通过把函数f依次作用在list的每一个元素,从而得到一个新的list返回(py3中返回一个map对象,用list函数转换一下即可)

def fib_recur(n):
    if n<=1:
        return n
    else:
        return fib_recur(n-1)+fib_recur(n-2)


X=input().strip().split()
N=list(map(int, X))[0]

for i in range(1, N):
    print(fib_recur(i),end=' ')

注意哈这个X必须是列表,int则表示函数了,当然也可以其他函数命名

def fib_recur(n):
    if n<=1:
        return n
    else:
        return fib_recur(n-1)+fib_recur(n-2)


def ex(c):
    return int(c)
        
X=input().strip().split()
N=list(map(ex, X))[0]

for i in range(1, N):
    print(fib_recur(i),end=' ')

注意他是自动迭代地对X列表的每一个元素操作,也就是说map自带迭代器!

 

3、map函数和lambda函数结合

显然只用改变map函数中的函数体就可以,无非就是函数体没有了实名,将lambda放于map的参数条件之中

def fib_recur(n):
    if n<=1:
        return n
    else:
        return fib_recur(n-1)+fib_recur(n-2)

def ex(c):
    return int(c)
        
##X=input().strip().split()
##N=list(map(ex, X))[0]
##
##for i in range(1, N):
##    print(fib_recur(i),end=' ')


X=input().strip().split()
N=list(map(lambda a:int(a), X))[0]

for i in range(1, N):
    print(fib_recur(i),end=' ')

在本代码list(map(lambda a:int(a), X)) 这一句只用注意两个点:

1) lambda参数只能是一个参数标量,因为map是自动对列表X的元素迭代的

2)X为一维情况,所以他的每一个元素是标量

针对X为二维情况,博主暂时没想到好的解决办法,只能是X[2]来选择其中的一个向量列表。

def fib_recur(n):
    if n<=1:
        return n
    else:
        return fib_recur(n-1)+fib_recur(n-2)


X=[[1,2,3],[2,4,6],[3,6,9]]
N=list(map(lambda a:int(a), X[2]))[2]

for i in range(1, N):
    print(fib_recur(i),end=' ')

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值