lambda函数用法及注意事项(简单总结,有待补充)

lambda隐函数

目录

lambda隐函数

1.一行自定义函数

2.结合Python内置函数

        filter()函数     filter(function, iterable)

        map()函数  map(function, iterable, ...)

        iter()函数       iter(object[, sentinel])

        next()函数     next(iterable[, default])

        sorted() 函数 


1.一行自定义函数

(1)定义参数值传递

参数=[x,x,x,x,x,x]
d=lambda 参数:公式
print(d“参数”(值))   #临时改默认值

 (2)或是可以在函数后面直接传递实参

d=lambda 参数:公式(x,x,x,x,x,x)

 (3)亦或是

def d(n):
    return lambda x:x+n

2.结合Python内置函数

filter()函数     filter(function, iterable)

用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

参数

  • function -- 判断函数。
  • iterable -- 可迭代对象。
def detect(n):
    return n.startswith("O")
newlist = filter(detect, ['Okabe','Mayuri','Itaru','Kurisu','Moeka','RukanFerris','Suzuha'])
print(newlist)
for i in newlist:
    print(i)
<filter object at 0x000001B111D81F70>
Okabe

进程已结束,退出代码0

map()函数  map(function, iterable, ...)

根据提供的函数对指定序列做映射。

参数

  • function -- 函数
  • iterable -- 一个或多个序列
x=map(lambda x:x*2,["嘟嘟噜~~~~~","真由理desu"])
for i in x:
    print(i)
嘟嘟噜~~~~~嘟嘟噜~~~~~
真由理desu真由理desu

进程已结束,退出代码0

iter()函数       iter(object[, sentinel])

iter函数用来生成迭代器。

  • object -- 支持迭代的集合对象。
  • sentinel -- 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。

next()函数     next(iterable[, default])

返回迭代器的下一个项目。

  • iterable -- 可迭代对象
  • default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
# 首先获得Iterator对象:
it = iter(['Okabe','Mayuri','Itaru','Kurisu','Moeka','RukanFerris','Suzuha'])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break

注意:

异常处理 StopIteration 用来作为迭代器的输出停止

如果传入第二个参数, 获取最后一个元素之后, 下一次next返回该默认值, 而不会出 StopIteration:

it = iter(['Okabe','Mayuri','Itaru','Kurisu','Moeka','RukanFerris','Suzuha'])
while True:
    x = next(it, 'SteinGate')
    print(x)
    if x == 'SteinGate':
        break
Okabe
Mayuri
Itaru
Kurisu
Moeka
RukanFerris
Suzuha

进程已结束,退出代码0

sorted() 函数 

 sorted(iterable, cmp=None, key=None, reverse=False)

函数对所有可迭代的对象进行排序操作,返回重新排序的列表。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

参数

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。(python3.X已经删除cmp,改用key)
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

注意:

key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次

a=[('桥田至',3),('椎名真由理',2),('牧濑红莉栖',4),('冈部伦太郎',1)]
print(sorted(a,key=lambda x:x[1]))
[('冈部伦太郎', 1), ('椎名真由理', 2), ('桥田至', 3), ('牧濑红莉栖', 4)]

进程已结束,退出代码0

三个注意

1,不能在lamdba内返回(return)任何值

2,lamdba不总是最好的选择,还有其他推导式

3,最好不要给变量赋值,当代码存在关于 lambda 函数的问题,Traceback 错误信息只会提示您 lambda 函数存在问题,而不会说具体哪个隐函数

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸢一折纸520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值