python箴言_Python高效率编程的8条箴言
一团网资讯
一团资讯 > python > Python高效率编程的8条箴言
Python高效率编程的8条箴言
2018-05-19 10:37:54 发布者:来源网络
Python作为一门动态语言,提供了很多语法糖,有助于我们以很短的代码实现复杂的功能。另一方面,Python的历史悠久,积累了大量高效易用的库,基本上常见的任务都有对应的工具库。善用Python的语言特性,我们可以写出Pythonic的代码,下面探讨一下如何写出高效率的Python代码
1.使用lambda表达式
lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方:
>>> g = lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3) 6
2.使用filter过滤list和dict
(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回: >>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, abcdef)
'bcdef'
3. 强大的map reduce函数
map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:
>>> def cube(x): return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x
...
>>> map(cube , abcde)
['aa', 'bb', 'cc', 'dd', 'ee']
另外map也支持多个sequence,这就要求function也支持相应数量的参数输入:
>>> def add(x, y): return x+y
>>> map(add, range(8), range(8))
[0, 2, 4, 6, 8, 10, 12, 14]
reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x,y): return x + y
>>> reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
4. 变量交换不需要使用临时变量
>>>a=1 >>>b=2 >>>a, b = b, a
5. 灵活使用生成器yield,让代码更简洁,优雅
生成器提供了一个更方便的产生迭代器的方式 代码更为简洁,优雅 充分利用了延迟评估的特性,仅在需要时才产生相应的元素,而不是一次产生所有元素,节省了内存,提高了效率 使得协同程序更加容易实现,协同程序是有多个近入点,可以恢复挂起的函数。实际上,python的协程相关的库例如greenlet等就是基于yield实现的。 使用yield写的斐波那契函数,简洁吧
>>> def fib(n):
... a = b = 1
... for i in range(n):
... yield a
... a,b = b, a+b
...
>>> c = fib(10)
>>> c.next()
1
>>> c.next()
1
>>> c.next()
2
>>> c.next()
3
>>> c.next()
5
6. 灵活使用list,set, deque, array优化性能
7.灵活使用sort,sorted进行排序 sort只能对列表进行排序,不会改变原来的列表 sorted可以对任何迭代器进行排序,例如字典dict,元组,多维list等
>>> from operator import itemgetter
>>> gameresult = [['jim',96,'A'],['Eddy',99,'A'],['Cindy',87,'B'], ['Lucy', 76, 'C']]
>>> sorted(gameresult, key=itemgetter(2,1))
[['jim', 96, 'A'], ['Eddy', 99, 'A'], ['Cindy', 87, 'B'], ['Lucy', 76, 'C']]
8. 使用python标准库,这块内容太多,不展开了 常见的库有requests, jsonlib, pandas,argparse等
[ 责任编辑:来源网络 ]
python箴言_Python高效率编程的8条箴言相关推荐
- python大鱼吃小鱼_python 游戏编程 大鱼吃小鱼
# 游戏编程:按照以下游戏编写一个乌龟类和鱼类,并尝试编写游戏. # 假设游戏场景(x,y)为0<=x<=10,0<=y<=10 # 游戏生成1只乌龟和10只鱼 # 他们的移动 ...
- 吃鸡 python开发_python青少年编程第三季——14、吃鸡联盟之亚瑟开枪(上)
各位小伙伴大家好: 本期开始我们一起来做一个小项目,总结一下我们学习过的有关面向对象编程的知识.目标是实现一个另类版的简易吃鸡游戏,让亚瑟开枪射击小兵. 在为程序写代码之前,我们需要先分析这个程序大概 ...
- socket python实例_Python网络编程—第27课—Socket实例(0531)
一.创建套接字示例(服务端) import socket #导入模块 import time #导入模块 s = socket.socket(socket.AF_INET, socket.SOCK_S ...
- 存款利息python题_Python——GUI编程 利息计算器 作业9(python programming)
importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...
- 2007冲杀职场N条箴言
2007冲杀职场N条箴言 第1只魔戒 第一条箴言:习惯仿佛像一根缆绳,我们每天给它缠上一股新索,要不了多久,它就会变得牢不可破. 第二条箴言:人类所有优点都要变成习惯才有价值,即使爱这样一个永恒的 主 ...
- python网络编程内容_Python网络编程
本文要写的内容也称为Python套接字编程,并简单介绍socketserver类.参考教程主要是<Python核心编程>. 首先,客户端/服务器模型,客户端向服务器发送请求,在请求合理的情 ...
- python概率编程_Python概率编程库PyMC应用案例二则,pymc应用案例
Python概率编程库PyMC应用案例二则,pymc应用案例 这是受国防科大刘万伟老师委托发的概率编程方面的内容,这方面我不懂,为了避免解释错了,我就直接把刘老师的PPT资料截图发了. 代码执行结果为 ...
- python语句行从解释器提示符后第几列开始_Python核心编程(第2版)PDF文档免费下载...
第1部分 Python核心 第1章 欢迎来到Python世界 1.1 什么是Python 1.2 起源 1.3 特点 1.3.1 高级 1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1 ...
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
最新文章
- jsp访问WEB-INF下面的资源
- dbvis 数据库工具:数据库驱动集合包获取,dbvis数据库工具安装驱动实例演示
- Deepin v20依赖错误,检测更新失败解决办法
- STP/RSTP/MSTP协议简介
- 【转】_declspec(naked) 使用
- java反射 动态调用_java反射拼接方法名动态执行方法
- NHibernate 3.3
- linux程序库设置错误,Citrix在Arch Linux中无效 – 库错误
- Hive Hooks介绍
- anconda设置镜像源_三、DockerFile 定制属于自己的专属镜像
- seq2seq模型_使用Tensorflow搭建一个简单的Seq2Seq翻译模型
- cf 1102F Elongated Matrix
- TensorFlow中的Shape如何理解
- Mybatis面试题总结
- python无法打开h5权限_求助:python post请求访问不到数据
- 看看下边的问题你能够回答出来多少?
- 【Go语言学习】安装与配置
- Node Sass could not find a binding for your current environment
- 服务器上的文件夹设置ftp,设置ftp服务器上传文件夹
- 浅谈LOG日志的写法
热门文章
- Qt工作笔记-QGraphicsScene练习【Qt图形框架练习】
- C++工作笔记-枚举类型的作用
- android拍照功能编程,android实现手机App实现拍照功能示例
- 计算机拼图形 比创意教案,拼图形比创意教学设计.doc
- LoadRunner几个重要的概念:事务、集合点、思考时间
- linux 终端与shell输出大小不匹配
- Linux网络编程--sendfile零拷贝高效率发送文件
- windows Tracert命令
- USACO-Section1.6 Number Triangles (动态规划)
- 二十、子程序设计(函数)