Python基础之内置函数和递归
一、内置函数

下面简单介绍几个:
1.abs() 求绝对值
2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True
3.any() 如果 iterable 的任何元素为真,则返回 True。如果iterable为空,则返回 False
4.callable() 如果 object 参数出现可调,则返回 True,否则返回 False
5.divmod() 以两个(非复数)数字作为参数,并在使用整数除法时返回由商和余数组成的一对数字。对于混合操作数类型,二进制算术运算符的规则适用。对于整数,结果与 (a//b,a%b) 相 同。对于浮点数,结果为 (a%b,q),其中q 通常为 math.floor(a/b),但可以小于1
6.enumerate() 参数必须是可迭代对象,函数运行结果得到一个迭代器,输出元素及对应的索引值
7.eval() 把字符串中的提取出来执行
8.frozenset() 不可变集合,frozenset()定义的集合不可增删元素
9.globals() 返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是从其调用它的模块)
10.round() 对参数进行四舍五入
11.sorted() 排序,不改变原列表
l=[1,2,4,9,-1]
print(sorted(l)) #从小到大
print(sorted(l,reverse=True)) #从大到小
12.zip() 拉链函数
它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)
a=[1,2,3]
b=['a','b','c']
print(list(zip(a,b)))#------->[(1, 'a'), (2, 'b'), (3, 'c')]
#因为在Python3中zip函数生成的是一个可迭代对象,所以,加一个list可以方便的打印出来,否则打印的是一个对象
加一个*就可以解压
a=[1,2,3]
b=['a','b','c']
c=list(zip(a,b)) d=zip(*c)
print(list(d))#[(1, 2, 3), ('a', 'b', 'c')]
13.max()
返回可迭代的最大项或两个或更多参数中最大的一个。
如果提供了一个位置参数,它应该是一个 iterable。返回迭代中的最大项。如果提供了两个或多个位置参数,则返回最大的位置参数。
max()可以指定key(也就是指定要比较的部分)
14.map() 映射
返回一个迭代器,它应用 function 到 iterable 的每个项目,产生结果
l=[1,2,3,4]
m=map(lambda x:x**2,l)
print(list(m)) ----->[1, 4, 9, 16]
15.reduce() 合并
from functools import reduce
def multi(x,y):
return x*y a = reduce(multi,[1,2,3,4,5])
print(a)#120 五个数相乘的结果
16.filter() 过滤 保留布尔值为True的元素
names=['a_sb','b_sb','c_sb','d']
print(list(filter(lambda name:name.endswith('_sb'),names)))--->['a_sb', b_sb', 'c_sb']
详细的内置函数介绍可以参照以下:https://www.rddoc.com/doc/Python-3.6.0/library/functions/
17.compile()编译,将一个字符串编译为字节代码
语法:
compile(source, filename, mode[, flags[, dont_inherit]])
参数介绍
source -- 字符串或者AST(Abstract Syntax Trees)对象。。
filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
mode -- 指定编译代码的种类。可以指定为 exec, eval, single。
flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
flags和dont_inherit是用来控制编译源码时的标志
至少要有前三个参数,
>>> compile('a','','exec')
<code object <module> at 0x00000242A1C28030, file "", line 1>
二、匿名函数(lambda表达式)
def func(x):
return x**2
print(func(2)) lambda x:x**2 #上边的函数就可以直接写成这种形式
lambda函数自带返回值
匿名函数只能取代一些很简单的函数,主要与其他函数搭配使用
还有一种情况是有些函数定义后只使用一次就用不到了,如果不删除的话会占内存空间,删除又会很麻烦,这时就可以用到匿名函数
三、递归
在调用一个函数的过程中,直接或间接使用了函数本身
递归效率很低,需要在进入下一次递归时保留当前状态,Python不像其他语言,没有尾递归,但是Python有限制条件,不允许用户无限递归
递归的特点:
1.必须要有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应该有所减少
3.递归效率不高,递归层数过多会导致栈溢出
示例:
# 1 文件内容如下,标题为:姓名,性别,年纪,薪资
#
# egon male 18 3000
# alex male 38 30000
# wupeiqi female 28 20000
# yuanhao female 28 10000
#
# 要求:
# 从文件中取出每一条记录放入列表中,
# 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式
#
# 2 根据1得到的列表,取出薪资最高的人的信息
# 3 根据1到的列表,取出最年轻的人的信息
# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
# 5 根据1得到的列表,过滤掉名字以a开头的人的信息
# 6 使用递归打印斐波那契数列(前两个数的和得到第三个数)
# 0 1 1 2 3 4 7... with open('b.txt',encoding='utf-8')as f: l=[{'name': line.split()[0], 'sex': line.split()[1], 'age': line.split()[2], 'salary': line.split()[3]} \
for line in f]
#2.
print(max(l,key=lambda i:i['salary'])) #3.
print(min(l,key=lambda i:i['age'])) #4.
m=map(lambda x:x['name'].capitalize(),l)
print(list(m))
#5.
print(list(filter(lambda x:not(x['name'].startswith('a')),l)))
#6.
def f(n):
if n==0:
return 0
elif n==1:
return 1
else:
if n==1000:
return f(1000)
else:
return f(n-2)+f(n-1) for i in range(150):
print(f(i))
Python基础之内置函数和递归的更多相关文章
- Python基础之内置函数(二)
先上一张图,python中内置函数: python官方解释在这:点我点我 继续聊内置函数: callable(object):检查对象是否可被调用,或是否可执行,结果为bool值 def f1(): ...
- python基础之内置函数
该博客内容参考http://www.cnblogs.com/wupeiqi/articles/4943406.html 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经 ...
- python基础之内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...
- python基础之内置函数和匿名函数
内置函数 学习函数以后多了很多概念,例如函数的命名空间,函数的作用域,函数的调用等等,函数的作用就是为了实现某些功能而方便以后可以调用,内置函数就是这样的一些公共的函数,被称为内置函数. 我们就一 ...
- python基础之内置函数(一)
内建函数都在 _builtins_ 里面 (1)abs() 取绝对值 adb(-10) 10 (2)bool()将参数转换成布尔型,返回值是True或False 参数是数字时,0返回False,其他任 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python基础-内置函数 isinstance() 与 issubclass()
面向对象编程之内置函数 isinstance() 与 issubclass() isinstance():判断一个对象是否是另一个类的实例.返回bool值,True表示是,False表示不是. 语法: ...
- Python基础-内置函数、模块、函数、json
内置函数 1.id()返回对象的内存地址: 2. type() 返回对象类型: 3.print()打印输出: 4. input()接受一个标准输入数据,返回为string类型: 5. list() ...
随机推荐
- 微信小程序多张图片上传
微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...
- 如何按内容筛选dom
有时候我们需要按照dom的text内容去筛选,那么可以用jQuery的contains筛选 写法 $("div:contains(aaa)") 筛选出内容包含aaa的div 另外 ...
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置. ...
- Windows系统如何使用sqlmap
使用方法:需要安装python,不能安装最新版本的python3.2.2只能安装2.6-3.0这些版本,包括2.6,3.0 这里,我提供一个Python的安装包.点击这里下载→ Python2.7 然 ...
- CentOS7安装使用Docker
安装 Docker 官方为了简化安装流程,提供了一套安装脚本,CentOS 系统上可以使用这套脚本安装: curl -sSL https://get.docker.com/ | sh 执行这个命令后, ...
- JDBC复习
-----------------------------------------JDBC复习----------------------------------------- 1.JDBC (Jav ...
- 关于前后端同构,我的一点思路和心得(vue、nodejs、react、模版、amd)
最近1年多,前后端同构慢慢变成一个流行词,也许很多人还停留在前后端分离的最佳实践道路上,但实际上又有一批人已经从简单的服务端渲染走向探索最佳前后端同构方案的路上了.不过,我只是膜拜后者的过客. 虽然大 ...
- 日常踩坑 searter
目录 es7中的async, await Django生成二维码并转为base64 Django配置404页面 很傻逼的坑 no module named pil 其他 es7中的async, awa ...
- Asp.net MVC 如何对所有用户输入的字符串字段做Trim处理
经常需要对用户输入的数据在插入数据库或者判断之前做Trim处理,针对每个ViewModel的字段各自做处理是我们一般的想法.最近调查发现其实也可以一次性实现的. MVC4.6中实现方式 1,实现IMo ...
- Eclipse导出JavaDoc中文乱码问题解决
在Eclipse里 export 选 JavaDoc,在向导的最后一页的Extra JavaDoc Options 里填上参数即可 比如项目采用的是UTF-8的编码就填:-encoding UTF-8 ...