pythonic operations
- 变量交换
- >>> a, b = b, a
- 循环遍历区间元素
- >>>for i in range(10):
- ... print (i)
- 返回的是生成器对象,生成器比列表更加节省内存
- 带索引位置的循环遍历
- >>>colors = ['red', 'green', 'blue', 'yellow']
- >>>for i, color in enumerate(colors):
- ... print (i, 'mapping', color)
- 字符串连接
- >>>colors = ['red', 'green', 'blue', 'yellow']
- >>>print( ', ', join( colors ) )
- join 是一种更加高效的字符串连接方式,使用 + 操作时,每执行一次+操作就会导致在内存中生成一个新的字符串对象,遍历几次有几个字符串生成,造成无谓的内存浪费。而用 join 方法整个过程只会产生一个字符串对象。
- 打开/关闭文件
- >>>with open('data.txt') as f:
- ... data = f.read()
- 列表推导式
- result = []
- for i in range( 10 ):
- s = i * 2
- result.append( s )
- 应该写成:
- [ i * 2 for i in range( 10 ) ]
- 1
- 装饰器
- 装饰器可以把与业务逻辑无关的代码抽离出来,让代码保持干净清爽,而且装饰器还能被多个地方重复利用。比如一个爬虫网页的函数,如果该 URL 曾经被爬过就直接从缓存中获取,否则爬下来之后加入到缓存,防止后续重复爬取。
- def web_lookup(url, saved={}):
- if url in saved:
- return saved[url]
- page = urllib.urlopen(url).read()
- saved[url] = page
- return page
- pythonic
- import urllib.request
- def cache(func):
- saved = {}
- def wrapper(url):
- if url in saved:
- return saved[url]
- else:
- page = func(url)
- saved[url] = page
- return page
- return wrapper
- @cache
- def web_lookup(url):
- return urllib.urlopen(url).read()
- 列表的操作
- 列表对象(list)是一个查询效率高于更新操作的数据结构,比如删除一个元素和插入一个元素时执行效率就非常低,因为还要对剩下的元素进行移动
- names = ['raymond', 'rachel', 'matthew', 'roger',
- 'betty', 'melissa', 'judith', 'charlie']
- names.pop(0)
- names.insert(0, 'mark')
- pythonic
- from collections import deque
- names = deque(['raymond', 'rachel', 'matthew', 'roger',
- 'betty', 'melissa', 'judith', 'charlie'])
- names.popleft()
- names.appendleft('mark')
- deque 是一个双向队列的数据结构,删除元素和插入元素会很快
- 序列解包
- p = 'vttalk', 'female', 30, 'python@qq.com'
- name = p[0]
- gender = p[1]
- age = p[2]
- email = p[3]
- pythonic
- name, gender, age, email = p
pythonic operations的更多相关文章
- backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.
昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示: <Exec> <ctx>yMaint.ShrinkLog</ctx> ...
- HDU 5938 Four Operations(四则运算)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- ios基础篇(二十九)—— 多线程(Thread、Cocoa operations和GCD)
一.进程与线程 1.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内: 如果我们把CPU比作一个工厂,那么进程就好比工厂的车间,一个工厂有 ...
- 一些Python的惯用法和小技巧:Pythonic
Pythonic其实是个模糊的含义,没有确定的解释.网上也没有过多关于Pythonic的说明,我个人的理解是更加Python,更符合Python的行为习惯.本文主要是说明一些Python的惯用法和小技 ...
- OpenCascade Modeling Algorithms Boolean Operations
Modeling Algorithms Boolean Operations of Opencascade eryar@163.com 布尔操作(Boolean Operations)是通过两个形状( ...
- A.Kaw矩阵代数初步学习笔记 4. Unary Matrix Operations
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- A.Kaw矩阵代数初步学习笔记 3. Binary Matrix Operations
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- mouse scrollings and zooming operations in linux & windows are opposite
mouse scrollings and zooming operations in linux & windows are opposite. windows中, 鼠标滚动的方向是: 查看页 ...
- MongoDB—— 写操作 Core MongoDB Operations (CRUD)
MongoDB使用BSON文件存储在collection中,本文主要介绍MongoDB中的写操作和优化策略. 主要有三种写操作: Create Update ...
随机推荐
- iOS:UIButton扩大按钮的响应区域
一.介绍 在开发中有时会遇见设计图里按钮设计的特别小,这时会用到手动扩大UIButton的响应范围 二.方式 下面有两个解决办法: 第一种方法:创建一个类目:UIButton+EnlargeTouch ...
- Github超棒资源汇总
Awesome List 中文资源大全 经典编程书籍大全 免费的编程中文书籍索引 awesome-awesomeness-zh_CN https://github.com/jnv/lists awes ...
- 一句话Javascript实现价格格式化
//小数点后面如果超过3位则转换错误,如1.1234 正确的是1.1234但却错误的转换成了1.1,234 var test1 = '1234567890.123' var format = test ...
- ValueError: output parameter for reduction operation logical_and has too many dimensions ?
https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.all.html#numpy.all 运行示例,却发生错误 import ...
- maven scope 范围讲解
解决办法: <dependency> <groupId>javax.servlet</groupId> <artifactId>java ...
- 使用idea创建web项目
一直使用的是eclipse,有一个项目开发用的是idea,我也尝试着熟悉一下idea,先来创建一个web项目吧 1.idea下载安装使用 官方下载地址:https://www.jetbrains.co ...
- 如何卸载EXCEL中的插件?
1.问题:每一次启动,excel都会弹出一个提示框,是因为将treeplan给删除了.找不到. 2.解决办法: 1)在加载项界面,点击转到.就进入自己加载的工具界面 2)将相应项前面的勾取消--但某插 ...
- go微服务框架go-micro深度学习(五) stream 调用过程详解
上一篇写了一下rpc调用过程的实现方式,简单来说就是服务端把实现了接口的结构体对象进行反射,抽取方法,签名,保存,客户端调用的时候go-micro封请求数据,服务端接收到请求时,找到需要调用调 ...
- PowerShe 消息提示框测试
1. 使用powerShell 弹出一个简单的消息框,代码如下,创建test.ps1脚本文件. $ConfirmPreference = 'None' $ws = New-Object -ComObj ...
- OpenCV 对矩阵进行掩码操作
Mask operations on matrices https://docs.opencv.org/master/d7/d37/tutorial_mat_mask_operations.html ...