匿名函数lambda(只适用于创建简单的函数且只使用一次)
格式:变量=lambda 参数1,参数2... : 单行表达式或函数调用
注意点:
- 不能使用return函数、循环语句、if语句(除了if实现的三目运算)
- lambda函数可以自行计算表达式的结果
- 需要用变量来引用lambda函数
a=lambda :print("yes") #将lambda函数引用给a,让a也有lambda函数的功能
print(a())
#结果
yes #是运行lambda函数的语句print("yes")的结果
None #是运行lambda函数外的print(a()),得到函数自身的返回值None
a=lambda x,y:x if x>y else y #三目运算格式
a(1,2) #没有输出命令,所以没有输出的值
print(a(1,2)) #输出运算后的结果2,不输出return
#结果
2
map函数(将可迭代对象的每个元素均调用想要调用的函数,返回包含每次调用函数的返回值的新列表)
格式:变量=map(被调用的函数,可迭代对象)
注意:
- 想要调用的函数只能有一个参数
- 不能直接输出
list1=[1,2,3,4,5] #创建一个可迭代的对象
def f(x): #定义一个f函数
return x**2
list2=map(f,list1) #map函数将list1中每个元素放入f函数中计算
list2=list(list2) #注意map函数映射的值不能直接用print函数输出,
print(list2) #需要转换为列表或元组才能输出
#使用lambda函数
list3=map(lambda x:x**2,list1) #因为x**2是一次性的函数使用,所以可以用lambda函数
list3=list(list3)
print(list3)
reduce函数(对可迭代对象逐一使用调用函数累计)
格式:import functools
变量=functools.reduce(被调用的函数,可迭代对象)
注意:
- 使用reduce函数前一定要调用functools库
- 只能有两个参数
import functools
list1=[i for i in range(6)] #创建可迭代对象
a =functools .reduce(lambda x1,x2:x1+x2,list1) #将list1中每个元素均使用一次被调用的函数并累计
print(a)
filter函数
格式:变量=filter(被调用的函数,可迭代对象)
注意:
- 只有一个参数
- 不能直接输出
list1=["123","12a","aas"] #创建一个可迭代对象
list1=filter(lambda x:x.isdigit(),list1) #利用isdigit函数找出只有数字的对象,
#利用filter函数将其筛选
list1=list(list1) #不能直接输出筛选之后的结果,
print(list1) #必须转换成列表或元组才能输出
sort函数
格式:列表 . sort(key"代表你想按什么排序",reverse=True"升序"or reverse=Flase"降序")
注意:
- 只能用于列表
- 只有一个参数
#创建一个列表存储字典
list1=[{"name":"tom","age":22},{"name":"jack","age":80},{"name":"rose","age":30}]
#利用lambda函数将需要比较的值传给key,让sort函数按key的值排升序
list1.sort(key=lambda a:a["name"])
print(list1)
标签:知识点,函数,迭代,map,python,list1,print,lambda
From: https://blog.csdn.net/2401_88065518/article/details/144173231