详谈Python基础之内置函数和递归


Posted in Python onJune 21, 2017

一、内置函数

详谈Python基础之内置函数和递归

下面简单介绍几个:

1.abs() 求绝对值

2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True

3.any() 如果 iterable 的任何元素为真,则返回 True。如果iterable为空,则返回 False

4.callable() 如果 object 参数出现可调,则返回 True,否则返回 False

5.divmod() 以两个(非复数)数字作为参数,并在使用整数除法时返回由商和余数组成的一对数字。对于混合操作数类型,二进制算术运算符的规则适用。对于整数,结果与 (a//b,a%b) 相 同。对于浮点数,结果为 (q,a%b),其中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() 拉链函数

创建一个迭代器,聚合来自每个迭代器的元素。

返回元组的迭代器,其中 i-th元组包含来自每个参数序列或迭代的第 i 个元素。当最短输入可迭代被耗尽时,迭代器停止。使用单个可迭代参数,它返回1元组的迭代器。没有参数,它返回一个空的迭代器

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

res=0
for i in range(100):
  res+=i
print(res)

16.filter() 过滤 保留布尔值为True的元素

names=['alex_sb','yuanhao_sb','wupeiqi_sb','egon']
print(list(filter(lambda name:name.endswith('_sb'),names)))--->['alex_sb', 'yuanhao_sb', 'wupeiqi_sb']

详细的内置函数介绍可以参照以下:https://www.rddoc.com/doc/Python-3.6.0/library/functions/

二、匿名函数(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程序设计入门(3)数组的使用
Jun 16 Python
Python实现Linux下守护进程的编写方法
Aug 22 Python
分享6个隐藏的python功能
Dec 07 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
Python实现分数序列求和
Feb 25 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
iPython pylab模式启动方式
Apr 24 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
用 python 进行微信好友信息分析
Nov 28 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
浅谈python内置变量-reversed(seq)
Jun 21 #Python
python 简单的绘图工具turtle使用详解
Jun 21 #Python
利用python批量给云主机配置安全组的方法教程
Jun 21 #Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 #Python
python将unicode转为str的方法
Jun 21 #Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 #Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 #Python
You might like
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
JS中的模糊查询功能
2019/12/08 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Python科学画图代码分享
2017/11/29 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
集体婚礼证婚词
2014/01/13 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL
MySQL自定义函数及触发器
2022/08/05 MySQL