python基础之Day15
一、函数递归
什么是函数递归:
函数递归调用是一种特殊的嵌套调用,在调用一个函数的过程中,又直接或间接地调用了该函数本身。
其中,函数的递归有明确的结束条件,不能无限制的调用,否则会撑破内存,在Python中限定递归最多调用1000层。
1000层这个值是大概的数值,这个数值可以通过Python内置的功能进行更改。
递归必须要有两个明确的阶段:
递推:一层层递归调用下去,强调每次进入下一次递归,问题规模都在减小
回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推,开始一层层回溯
其中,递归的精髓在于通过不断的重复逼近一个最终结果。
循环(while)能做的,递归都可以,为什么还要递归?
因为相较于循环,递归无须确定循环次数,只需确定结束条件。
举个例子,递归的应用:
二分法:
有个从小到大排列对的列表,判断某个值是否在里面。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,312]def search(search_num,nums): print(nums) if len(nums)==0: print('not exists') return mid_index=len(nums)//2 if search_num>nums[mid_index]: nums=nums[mid_index+1:] search(search_num,nums) elif search_num<nums[mid_index]: nums=nums[:mid_index] else: print('find it')search(31,nums) |
二、匿名函数
有名函数:基于函数名重复使用
匿名函数:没有绑定名字的下场就是使用一次就被回收了。
定义:
lambda x,y: x+y
其中冒号后面的值就相当于有名函数里的return 后面的值
res=( lambda x,y: x+y)(1,2)
max 工作原理:
1、首先将可迭代对象变成迭代器对象
2、res=next(迭代器对象)将res当作参数传给key指定的函数,然后将该函数的返回值当成判断的依据。
map的工作原理:
1、首先将可迭代对象变成迭代器对象
2、res=next(迭代器对象)将res当作参数传给第一参数指定的函数,然后将该函数的返回值当成结果之一
filter工作原理:
1、首先将可迭代对象变成迭代器对象
2、res=next(迭代器对象)将res当作参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下res
三、常用内置函数
1、
res='你好’.encode('utf-8')
res=bytes('你好’,encoding='utf-8')
2、
参考ASCII码将数字转成对应的字符
print(chr(65)) #'A'
参考ASCII码将字符转成对应的数字
print(ord('a')) #97
3、
将两个数进行取模运算,得到商和余数
print(divmod(10,3)) #(3, 1)
4、
l=['a','b','c'] #枚举
for item in enumerate(l):
print(item)
5、
l='[1,2,3]' #将字符串中的东西拿出了执行一遍
l1=eval(l)
print(l1,type(l1))
print(l1[0])
6、
print(round(3.3)) #四舍五入
7、
print(sum(range(101))) #求和
8、
将字符串变成模块名
module=input('请输入你要导入的模块名>>: ').strip() #module='asdfsadf'
m=__import__(module)
print(m.time())
python基础之Day15的更多相关文章
- python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)
一.类 先看一段代码: class Person: animal = '高级动物' walk_way = '直立行走' # 静态属性,静态变量,静态字段 language = '语言' def __i ...
- python基础一 day15 面试题
# def demo():# for i in range(4):# yield i## g=demo()## g1=(i for i in g)# g2=(i for i in g1)## prin ...
- python基础一 day15 作业
3.处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕def check_file(filename,aim): with open(filename,encoding= ...
- python基础一 day15 复习
迭代器和生成器迭代器 可迭代协议 —— 含有iter方法的都是可迭代的 迭代器协议 —— 含有next和iter的都是迭代器 特点 节省内存空间 方便逐个取值,一个迭代器只能取一次.生成器 —— 迭代 ...
- python基础一 day15 内置函数
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖: '\n' 换行,换到当前位置的下一行,而不会回到行首: # print()# input()# le ...
- Python之路,Day15 - Django适当进阶篇
Python之路,Day15 - Django适当进阶篇 本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣 ...
- Python之路【第二篇】:Python基础
Python基础 对于Python,一切事物都是对象,对象基于类创建 所以,以下这些值都时对象:"zhurui".22.['北京','上海','深圳'],并且是根据不同的类生成的对 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
随机推荐
- MySQL Point in Time Recovery the Right Way
In this blog, I’ll look at how to do MySQL point in time recovery (PITR) correctly. Sometimes we nee ...
- 20175311 2018-2019-2 《Java程序设计》第1周学习总结
教材学习内容总结 第一周我们主要尝试了怎么安装各种以后可能需要用到的软件,根据老师提供的博客教程进行自主学习安装软件,然后编写一些简单的语言程序. 教材学习中的问题和解决过程 问题1:在学习过程中主要 ...
- arcgis10.2 打开CAD文件注记乱码
1.使用ARCGIS10.2打开CAD文件,图面显示的注记内容为乱码,属性表中的注记内容正常2.同样的CAD文件在ARCGIS9.3中打开正常出现此情况影响历史数据使用,请求ESRI技术支持注:系统添 ...
- shell脚本四-三剑客
Shell编程——三剑客 简介 Grep:默认不支持扩展表达式,加-E或者egrep Awk:支持所有zhengze Sed默认不支持扩展表达式,加-r 2.sed语法格式 Sed 选项 命令 文件( ...
- solr字段压缩属性compressed新版本已经移除
solr字段压缩属性compressed新版本已经移除 可能是考虑到压缩意义不大还减少搜索效率,所以去掉了.而且好像没有替代属性.
- PyQt5系列教程(六)如何让界面和逻辑分离
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.3 前言 前面的内容我们介绍了利用QtDesigner来设计界面,再通过命令行工具p ...
- Spring MVC 之 请求url 带后缀的情况
RequestMappingInfoHandlerMapping 在处理http请求的时候, 如果 请求url 有后缀,如果找不到精确匹配的那个@RequestMapping方法.那么,就把后缀去掉, ...
- leetcode981
考虑线性的搜索会超时,所以用二叉搜索来解决,代码如下: class TimeMap: def __init__(self): self.ST = dict() def set(self, key: ' ...
- 模拟器 Unable to execute simctl install Error 117
ios 模拟器 Unable to execute '"/usr/bin/xcrun" simctl install "/Users/tt/PAServer/scrat ...
- 使用ContentProvider实现多应用的数据共享
ContentProvider: 实现一组通用的数据和方法的储存和共享,通常是通过getContentResolver()方法来获得Activity或其他应用程序组件中的ContentProvider ...