Python基础之day05-强化练习
Python基础之day05-强化练习
文章目录
- Python基础之day05-强化练习
- 一、递归函数
- 二、eval函数
- 三、lambda匿名函数
- 四、range函数
- 五、列表、字典、集合、元祖推导式
代码仓库地址: https://gitee.com/andox_yj/python
一、递归函数
介绍:如果一个函数在内部调用自己本身的话,这个函数就是递归函数。
注意:递归函数一般有终止条件,不然会一直嵌套调用下去,最多嵌套调用996次后程序就会报错
递归函数调用过程
# 一、递归用法 def function(num):# 2.结束条件if num < 10:print(num)# 3.调用自己function(num + 1)# 1.函数入口 function(1)# 二、递归应用:计算阶乘 def calNum(num):if num >= 1:result = num * calNum(num - 1)else:result = 1return resultret = calNum(3) print(ret) # 6
二、eval函数
- eval函数介绍:用来执行一个字符串表达式,并返回表达式的值。
注意:- 只会解析一层,既如果这个字符串里有变量的值依然是字符串,则会报错。
- 如果字符串里的变量没有定义,则会报错。
- 表达式介绍:由值、变量和操作符(或叫运算符)的组合,单独的值或变量也是表达式。例如:a=10; a * 3
- 代码示例
# 1、将str01里的a解析成变量后再运算。 a = 10 + 5 str01 = 'a + 20' print(str01) # <class 'str'> a + 20 print(eval(str01)) # <class 'int'> 35# 2、如果需要单独解析变量b,则需要在str01表达式中再添加一个eval来解析b b = "10 + 5" str01 = 'eval(b) + 20' print(str01) # <class 'str'> eval(b) + 20 print(eval(str01)) # <class 'int'> 35# 3、将字符串转成对应类型数据 list01 = '[1, 2, 3]' dict01 = '{"name": "zhang", "age": "18"}' num = '10' float01 = '10.1' print(type(eval(list01))) # <class 'list'> print(type(eval(dict01))) # <class 'dict'> print(type(eval(num))) # <class 'int'> print(type(eval(float01))) # <class 'float'># 4.拼接变量名取值 aa = "as" bb = "df" asdf = 10 print(eval(aa + bb)) # 10
三、lambda匿名函数
- 介绍:用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
- 代码示例
# 用法:变量名 = lambda [arg1 [,arg2,.....argn]]:expression # 1、lambda用法 sum = lambda arg1, arg2: arg1 + arg2 # 将lambda函数赋值给sum,当使用sum时需要传递参数 print("Value of total : %s" % sum(10, 20)) print("Value of total : %s" % sum(20, 20))# 2、lambda排序字符串 str01 = ['foo', 'card', 'bar', 'aaaa', 'abab'] # key接收一个函数,并将列表中的每个元素作为参数传入该函数,函数返回值与每个元素对应后,sort根据返回值对元素进行排序。 # lambda将每个字符串的每个字符转成列表再用set集合去重,len计算长度后返回sort进行排序 str01.sort(key=lambda x: len(set(list(x)))) print(str01) # ['aaaa', 'foo', 'abab', 'bar', 'card']# 3、lambda排序二维列表 list01 = [[1, 7], [1, 5], [2, 4], [1, 1]] # 按照一维来排序 list01.sort() print(list01) # [[1, 1], [1, 5], [1, 7], [2, 4]] # 按照二维来排序,key接收一个函数,并将列表中的每个元素作为参数传入该函数,lambda 返回每个参数的第二个值给sort排序 list01.sort(key=lambda x: x[1]) print(list01) # [[1, 1], [2, 4], [1, 5], [1, 7]]# 4、lambda排序字典 students = [{"name": "zhangsan", "age": 18},{"name": "lisi", "age": 19},{"name": "wangwu", "age": 17} ] # 将字典的key或者value返回给sort进行排序 students.sort(key=lambda x: x["name"]) print(students) # [{'name': 'lisi', 'age': 19}, {'name': 'wangwu', 'age': 17}, {'name': 'zhangsan', 'age': 18}]# 5、lambda+filter对列表过滤 numbers_list = [2, 6, 8, 10, 11, 4, 12, 7, 13, 17, 0, 3, 21] # filter返回一个filter对象,可用列表接收这个对象存放每个过滤出来的元素 # filter接收一个函数,一个可迭代对象,将每个元素传入函数里面过滤。 filtered_list = list(filter(lambda num: (num > 7), numbers_list)) print(filtered_list) # [8, 10, 11, 12, 13, 17, 21]
四、range函数
- 介绍:range函数根据传入的整数范围参数,生成一个迭代器,既装有赠书的列表
- 代码示例
# 使用:range(start, stop[, step]) # 1、默认从0开始到结束值 a = list(range(5)) print(a) # [0, 1, 2, 3, 4]# 2、包括开始值不包括结束值 b = list(range(1, 6)) print(b) # [1, 2, 3, 4, 5]# 3、给定步长 c = list(range(0, 10, 2)) print(c) # [0, 2, 4, 6, 8]# 4、倒序输出,需要指定步长为-1 b = list(range(3, -3, -1)) print(b) # [3, 2, 1, 0, -1, -2]# 5、在for循环中使用 for e in range(10):print(e)
五、列表、字典、集合、元祖推导式
- 介绍:推导式是根据一组数据序列,逐条经过处理后,生成一个新的数据序列,其可对每个数据添加条件判断后再处理。
- 代码示例
""" 列表推导式 [表达式 for 变量 in 列表 [if 条件] ] 字典推导式 {key:value for key in 列表 [if 条件] } 集合推导式 {表达式 for 变量 in 列表 [if 条件] } 元祖推导式 (表达式 for 变量 in 列表 [if 条件] ) """ # ################# 1、列表推导式 #################### # 原始列表值 old_list = [1, 2, 3, 4, 5]# 不带if的列表推导式 new_list = [i + 1 for i in old_list] print(new_list) # [2, 3, 4, 5, 6]# 带if的列表推导式,既先判断条件满足后再进行处理。 new_list_if = [str(i) for i in old_list if i > 2] print(new_list_if) # ['3', '4', '5']# 两个for循环 list_2 = [(x, y) for x in range(3) for y in range(2)] print(list_2) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]# 三个for循环 list_3 = [(x, y, z) for x in range(3) for y in range(2) for z in range(1)] print(list_3) # [(0, 0, 0), (0, 1, 0), (1, 0, 0), (1, 1, 0), (2, 0, 0), (2, 1, 0)]# 三个for循环加if list_3_if = [(x, y, z) for x in range(3) for y in range(2) for z in range(1) if y == 1] print(list_3_if) # [(0, 1, 0), (1, 1, 0), (2, 1, 0)] # 以上等同于下面这种写法: list_3_if = [] for x in range(3):for y in range(2):for z in range(1):if y == 1:list_3_if.append((x, y, z)) print(list_3_if) # [(0, 1, 0), (1, 1, 0), (2, 1, 0)]# 列表推导式案例:计算30以内可以被3整除的整数 multiples = [i for i in range(30) if i % 3 == 0] print(multiples) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]# ################# 2、字典推导式 #################### # 原始列表值 old_list = ['Google', 'Python', 'Mac'] old_dict = {'name': "张三", 'age': '18', 'gender': "man"}# 不带if的字典推导式 new_dict = {key: len(key) for key in old_list} print(new_dict) # {'Google': 6, 'Python': 6, 'Mac': 3} # 如果直接循环字典,输出的是字典的key new_dict = {key: len(value) for key, value in old_dict.items()} print(new_dict) # {'name': 2, 'age': 2, 'gender': 3}# 带if的字典推导式 new_dict = {key: eval(value) + 1 for key, value in old_dict.items() if key == "age"} print(new_dict) # {'age': 19}# ################# 3、集合推导式 #################### # 既元素没有重复,包裹在大括号中 square = {i ** 2 for i in (1, 2, 3, 4, 5)} print(square) # {1, 4, 9, 16, 25}# 集合案例1:字符串去重 set_srt = {s for s in 'asdlvabsdfasdf'} print(set_srt) # {'l', 's', 'f', 'b', 'd', 'a', 'v'} print(type(set_srt)) # <class 'set'># 集合案例2:输出不是abc的字符,且不重复, set_srt = {s for s in 'asdlvabsdfasdf' if s not in 'abc'} print(set_srt) # {'v', 'l', 's', 'f', 'd'} print(type(set_srt)) # <class 'set'># ################# 4、元素推导式 #################### new_tuple = (x for x in range(1, 10)) # 返回的是生成器对象 # 使用 tuple() 函数,可以直接将生成器对象转换成元组 print(tuple(new_tuple)) # (1, 2, 3, 4, 5, 6, 7, 8, 9)
Python基础之day05-强化练习相关推荐
- Python基础day05 作业解析【10道 函数作业题】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day04[函数(定义与调用.文档说明.传参函数.全局变量.返回值.嵌套调用)] ...
- Python基础day05【函数应用:学生管理系统、拆包、今日总结】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...
- Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...
- Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] 目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...
- python基础语法 第0关print-温州文成高校邦数据科学通识课【Python基础语法】答案...
温州文成高校邦数据科学通识课[Python基础语法]答案it8p 温州文成高校邦数据科学通识课[Python基础语法]答案 关注公众号{帅搜}即可查询答案 支持:网课,智慧树,知到,超星,尔雅,学习通 ...
- python基础教程多少钱-厦门厦禾路Python基础教程培训费用多少-泰兴市新闻
厦门厦禾路Python基础教程培训费用多少-泰兴市新闻 [美力程]是厦门中信教育旗下,专注于中国6-18岁青少年STEAM创客教育的先锋品牌.依托中心20+年积累的计算机教育经验和职业IT精英教研团队 ...
- python基础教程是什么意思-python基础教程都有什么?
分享一下传智播客的python基础教程 第一阶段 Python核心编程 可掌握的核心能力 1.掌握Python基础语法,具备基础的编程能力; 2.建立起编程思维以及面向对象程序设计思想.解决的现实问题 ...
- 【Python基础】Github标星4.7k,每天推送一个python小实例的Python库
文章来源于Python与算法社区,作者zhenguo 推荐一个 python-small-examples 库,每天推送一个Python实例.时至今日,共有4700人 star 期间多次登上githu ...
- Python基础day02【if结构、if elif 结构、while循环、for循环、Break和continue、Debug 调试、三目运算、循环 else 结构】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[九天课程]博客笔记汇总表[黑马程序员] Python基础day02 作业解析[6道 if 判断题.9道 循环题] 学习目标: 能 ...
- 超全面Python基础入门教程【十天课程】博客笔记汇总表
目录 1.学习地址 2.下载地址[视频.源码.课件.软件] 3.详细博客笔记 Day 01 Day 02 Day 03 Day 04 Day 05 Day 06 Day 07 Day 08 Day 0 ...
最新文章
- .html?t=1a=2类似传递参数到flex中
- 【Nginx】浏览器请求URL遇到错误:no-referrer-when-downgrade
- 如何用excel筛选相似内容_Excel中如何将两组数据的相同内容进行快速筛选配对...
- 运行一个Hadoop Job所需要指定的属性
- 一个C++程序执行main函数前和执行完main函数后会发生什么。
- 阿里:“马云从未转让和退出”;华为三星和解;拼多多回应传闻 | 极客头条...
- 让cat命令有颜色得输出文件(ccat)
- 浅谈Event Loop
- 计算机二级C语言考试题库软件
- 2021中兴捧月杯算法大赛模面大赛总结
- OSChina 娱乐弹弹弹——周一至周五,汗滴禾下土
- 299. 猜数字游戏【我亦无他唯手熟尔】
- 用python画小狗,用turtle画个单身狗送给自己~
- CF1367C - Social Distance
- KMP算法(快速找出字串)
- 第4章第1节:如何往幻灯片中插入指定行和列的表格 [PowerPoint精美幻灯片实战教程]
- 软件需求规格说明书描述的10类非功能性需求
- Java基础:面向对象特性(多态)
- Android小项目——仿iPhone计算器
- 生成王者荣耀装备信息Markdown和Excel
热门文章
- 2023年2月用户体验GX评测:国有行及股份行持续领跑,农商行农信社积极探索用户体验提升
- C#设置滚动条定时滚动
- spring swing_使用Swing的Spring简介
- 复旦大学2018--2019学年第一学期(18级)高等代数I期末考试第八大题解答
- 没有四肢的生命 - 尼克·武伊契奇
- 【知识点】大数分解与素数判定 --- 【Miller-rabin算法】【pollard-rho算法】
- python办公自动化(八)python-docx实现word的批量合并、制作邀请函以及数据的情感分析
- 线性回归 - 宝可梦案例
- 通俗易懂的双亲委派机制
- MIT计算机博士自述:我为什么要念博士