一、三元表达式(有函数名)
1,仅适用于当条件成立返回一个值,不成立返回另一个值的场景
res=返回值1 if 条件 else 返回值2
eg: x=88 y=80,
res=x if x>y else y
print(res)
二、函数的递归
递归函数嵌套的一种特殊方式,比如在函数的内部直接或间接的调用自己,导致函数陷入了死循环,用递归的时候一定需要注意的是需要添加终止条件。
三、匿名函数(无函数名)
f= lambda 参数:返回值
例: f=lambda x,n:x**n
print(f(2,3)) (注意与三元表达式对比记忆。)
匿名函数一般不单独使用而是与其他内置函数配合使用。比如作为其他函数的一个内置条件。
salaries={
"James":5000,
"KD":3500,
"Curry":4000,
"Harden":4100
}
print(max(salaries))#这个是根据字典的key排序的,我们想达到的目标是取工资最高的
print(max(salaries,key=lambda x:salaries[x])
print(sorted(salaries,key=lambda x:salaries[x])#同理排序有
常见搭配的函数有map.sorted,min,max,filter,reduce
#map,reduce,filter用法格式都是 reduce(条件函数,输入参数,初始值)
nums=[1,2,3,4,5]
res = map(lambda x:x**2,nums)
print(res)
print(list(res))#需要转化称list才能看结果
from functools import reduce
res1=reduce(lambda x,y:x+y,range(0,101),0)#完成1+2+3++++100的计算,reduce用于叠加计算
print(res1) #reduce(条件,对象,初始值)
list1=["today", "is", "the", "first", "day"]
res=reduce(lambda x,y:x+" "+y+" ",list1)
print(res) #today is the first day
res = filter(lambda n:n>3,nums) #filter过滤用的
print(list(res))
res2=filter(lambda x:x.endswith("s"),list1)#以...开头 .startswith()
print(list(res2))
四、format与%
format三种基本用法:
"{} {} {}.format("Albert",23,"Man")"="%s%s%s"%(name,age,gender)
res="{1}{0}{1}".format("Albert",18,"Man")#18Albert18 101表索引
"{name} {age} {gender}.format(name="Albert",age=23,gender="Man")#关键值对应
不同点:
#格式灵活 c=(250,250) #s1="敌人的坐标:%s" %c 报错,因为实际上c并不是字符串 s1="敌人的坐标:{}".format(c)#很灵活自动根据输入设定格式。 print(s1) #调整占位符 print("{:3>10}".format("18")) print("{:*^10}".format("18")) #定义数据精度 print("{:.05f}".format(3.141592653))#小数点五位 #数据分节 print("{:,}".format(3141592653)) #三位自动分节 #数据进制转换 print("{:b}".format(8))#bdox二 十 八 十六 进制
zip拉链函数
left="hello"
right2={"x":1 ,"y":2 ,"z":3 }
right1=[1,2,3,4,5]
print(list(b) #[('h', 1), ('e', 2), ('l', 3), ('l', 4), ('o', 5)]
五、列表生成式
l1=["egg%s" %i for i in range(1,100) if i>5]
六、生成器表达式
将列表生成式的中括号改成小括号就是一个生成器表达式了
l1=("egg%s" %i for i in range(1,100) if i>5)
总结: