DAY14 函数(三)
一.三元表达式
三元运算符:就是if...else...的语法糖但是只支持只有一条if...else...语句的判断
原:
cmd = input('cmd:')
if cmd.isdigit():
print('可转化为数字')
else:
print('不可转化为数字')
三元表达式简化:
cmd = input('cmd:')
print('可转化为数字') if cmd.isdigit() else print('不可转化为数字')
案例:得到两数大值
a = 20
b = 40
res = a if a > b else b
print(res)
二.推导式
列表(元组)与字典的转换语法糖
列表推导式:
dic = {'a': 1, 'b': 2, 'c': 3}
res = [(k,v) for k , v in dic.items()]
print(res)
# [('a', 1), ('b', 2), ('c', 3)]
字典推导式:
ls = [('a', 1), ('b', 2), ('c', 3)]
res = {k:v for k,v in ls}
print(res)
# {'a': 1, 'b': 2, 'c': 3}
案例:
range(10)推导为列表:
res_ls = [arg for arg in range(10)]
print(res_ls)
迭代出可解压的单列容器可以推导出字典
res_dic = {v:k for k,v in enumerate('abd')}
print(res_dic)
三.递归
递归的定义:
递归:回溯与递推
回溯:询问答案的过程
递推:推出答案的过程
递归前提:
回溯到一个有具体结果的值,才能开始递推
回溯与递推的条件要有一定规律
递归的本质:
函数的自我调用(自己调用自己)
递归深度:
递归不是无限的系统默认的递归次数为:1000
可以通过sys模块手动设置,查询递归深度
sys.setrecursionlimit(100) # 手动设置递归深度
sys.getrecursionlimit() # 查询递归深度
递归的两种方式:
自己调用自己:
count = 0
def a():
global count
count += 1
if count > 50:
return
a()
a()
函数间接调用自己:一旦形成循环调用,就产生了递归
def b():
c()
def c():
d()
def d():
b()
b()
案例:
询问第一个人年龄,回溯条件 小两岁,第五个人说出自己的年龄,推导出第一个人年龄
条件:下一个人的年龄比这个人年纪大两岁
def get_age(num): # 得到年龄
if num == 1:
return 58
age = get_age(num - 1) - 2
return age
res = get_age(5)
print(res)
阶乘
5! = 5 * 4! 4! = 4 * 3! ... 2! = 2 * 1
def factorial(num):
if num == 1:
return 1
temp = num * factorial(num - 1)
return temp
res = factorial(5)
print(res)
四.匿名函数
匿名函数:没有函数名,没有函数体,只有一个返回值
关键字:lambda | 参数列表省略() |返回值return关键字也被省略
f = lambda x,y: (x+y,x-y)
应用场景:
1.匿名函数函数地址可以被一个变量接收,该变量就可以作为函数名来使用,但就违背了匿名初衷
2.结合内置函数来使用:内置函数某些参数需要一个函数地址
可以赋值一个有名函数名,也可以直接赋值匿名函数
案例:
ls = [100, 200, 50, 10]
res = max(ls, key=fn)
print('------------------------')
print(res)
res1 = max(ls, key=lambda ele: ele)
print(res1)
最新文章
- gitlab多人协作开发
- flume整合kafka
- vim插件ctags的安装和使用
- Android缓存学习入门(二)
- sharepoint 2013 未能加载类型";Microsoft.AnalysisServices.SharePoint.Integration.ReportGalleryView";
- 关于vs的lib文件和dll文件
- HDU 5306 Gorgeous Sequence
- 查看oracle版本信息
- PHP基础 windows环境下安装Apache Mysql PHP
- Head First设计模式之访问者模式
- mysql 创建用户
- js改变数组的两个元素的位子,互换、置顶
- mean
- cordova打包vue2(webpack)android、ios app
- phpstorm之ssh链接远程Linux服务器
- POJ2689 Prime Distance(数论:素数筛选模板)
- HDU 2841 Visible Trees(容斥)题解
- storage路径问题
- gulp 系统教程
- PHP安全之register_globals (转)
热门文章
- orange---openresty.
- 第二周作业-web后台应用开发与xml
- 在docker中使用mysql数据库,在局域网访问
- 【Python全栈】HTML <;!--...-->; 注释 、CSS/JS //注释 和 /*.....*/ 注释
- 计算机组成原理——主存与cache的映射关系
- LaTeX参考文献出现问号
- 更新node的版本,node没有安装到c盘,安装到了D盘
- java EE(1)
- (转)Linux vi 命令大全
- python自动类型转换(针对于Number数据类型来的)精度从低到高 bool->;int->; float->;complex 当两个不同是数据类型运算时候,默认想更高进度转化