lambda隐函数
目录
filter()函数 filter(function, iterable)
map()函数 map(function, iterable, ...)
iter()函数 iter(object[, sentinel])
next()函数 next(iterable[, default])
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 函数存在问题,而不会说具体哪个隐函数