三元表达式/列表生成式/生成器表达式/匿名函数/内置函数/函数递归
一、三元表达式
三元表达式是python提供的一种简化代码解决方案。
语法:
res = 成立返回的值 if 条件判断 else 不成立返回电热值
def func1(x,y): return x if x > y else y func1(11,12)
二、列表生成式
列表生成式是python提供的一种简化代码解决方案,用来快速生成列表。
语法:
list = [ line for line in 可迭代对象 ]
list = [值 for 可迭代对象中取出的每一个值 in 可迭代对象 if 判断]
list1 = [line for line in range(1,101)] print(list1)
list = ['a','b','c'] list1 = [line + 'q' for line in list] print(list1) #['aq', 'bq', 'cq']
三、生成器表达式(生成式)
g = (line for line in range(1,10)) print(g) #<generator object <genexpr> at 0x000000000263DD00> print(next(g)) #1 print(next(g))#2
四、列表生成式VS生成器表达式
生成器表达式 | 列表生成式 | |
优点 | 节省内存空间 | 可以索引取值 |
缺点 | 取值不方便 | 浪费资源 |
五、匿名函数
语法:
lambda空格:返回值
lambda : res
注意:匿名函数必须配合内置函数一起使用才有意义。
#lambda x,y:x+y print((lambda x,y:x+y)(1,2)) #3
六、内置函数
python内部提供的内置方法
如:print(),len(),range(),max(),min(),map(),filter(),sorted()
print(max(10,20)) print(min(10,20)) list = [2,1,3] print(max(list))
#比较数字最大的字母名 dict = { 'n':100, 'e':60, 'm':40, 'a':20, 'b':10, } print(max(dict)) #默认按照:key n #字符串的比较:ASCII print(max(dict.values())) #按照:value 100 print(max(dict,key=lambda x: dict[x])) #n print(min(dict,key=lambda x: dict[x])) #b
list = [2,1,3] print(sorted(list)) [1, 2, 3] print(sorted(list,reverse=True)) #[3, 2, 1]
#map映射用法 map(func,iterable) a = ['a','b','c','d'] #需求:给list中的除了字母d,其余都加上'_nice' res = map(lambda x: x if x == 'd' else x +'_nice', a) print(res) #<map object at 0x0000000002983F98> print(list(res)) #['a_nice', 'b_nice', 'c_nice', 'd']
#reduce合并 导入 reduce(func,iterable,initial) initial是初始值,默认为None #需求:求1-100的和 from functools import reduce res = reduce(lambda x,y: x+y,range(1,101),0) print(res) #5050
#filter过滤 filter(func,iterable) a = [1,2,3,4] res = filter(lambda x: x > 3,a) print(res) #<filter object at 0x0000000002973F28> print(list(res)) #[4]
七、函数递归
函数递归指的是重复直接调用或间接调用函数本身。是一种函数嵌套调用的表现形式。
直接调用:指的是在函数内部,直接调用函数本身。
间接调用:两个函数之间相互调用间接造成递归。
python中有递归默认深度(限制递归次数): 998,1000
ps: 每一台操作系统都会根据硬盘来设置默认递归深度。
#获取递归深度: sys.getrecursionlimit() #设置递归深度: sys.setrecursionlimit(深度值) #注意: 单纯的递归调用时没有任何意义的。
''' 递归有意义需遵循:回溯和递推 回溯:重复执行,直到找到终止条件 递推:找到终止条件后,开始一层层往上推回来。 age(5) = age(4) + 2 age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 18 那么,age(5)应该是多少? res = age(n - 1) + 2 ''' def age(n): if n == 1: #终止条件 return 18 #这里写return才能实现递推 return age(n - 1) +2 res = age(5) print(res) #26