关于python的一些笔记 2018-03-01 00:04:54
2018-03-01 00:05
330 查看
关于python的一些笔记 2018-03-01 00:04:54
以下是近期写python代码的时候遇到的一些常用的函数和方法,在此记录一下:isinstance
可以用来判断某变量是否为某个类型,返回一个布尔值a = 'sherlock' >>> isinstance(a,str) True >>> isinstance(a,int) False >>> b = 18 >>> isinstance(b,str) False >>> isinstance(b,int) True
list comprehension(列表生成式)
列表生成式是为了完成如下语句段的简写版:LST = [] for SOMEITEM in SOMELIST: (if SOMECONDITION) RESULT = SOMEOPERATION(SOMEITEM) LST.append(RESULT) LST
像这样的语句可以用列表生成式完成,比如:
>>> [x*x for x in range(5)] [0, 1, 4, 9, 16] >>> [x*x for x in range(5) if x%3 == 1] [1, 16] >>> [x+y for x in range(5) for y in range(1,6)] [1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9] >>> [x+y for x in 'ABC' for y in 'XYZ'] ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
可以用for循环,后面跟if可以进行拣选,也可以多重循环,后面跟两个for相当于两重循环,即对两个列表的每两个元素分别操作一次。较为实用的功能。
generator
这个object一般称为生成器,上面说过的list comprehension在列表比较大的时候,比如我想range(9999999),很占内存,所以考虑用generator来避免这个缺点。用圆括号代替方括号就可以生成generator:>>> (x*x for x in range(5)) <generator object <genexpr> at 0x7fa3d0014a50> >>> sqr = (x*x for x in range(5)) >>> for i in sqr: ... print i ... 0 1 4 9 16
之所以generator可以避免内存占用问题,是因为generator每次只生成下一个需要迭代的元素,而不是直接都生成成为一个list。
yield
yield可以用来生成一个generator,比如在以下函数里,用yield返回一个generator>>> def ShowYield(): ... for i in range(5): ... yield i*i ... >>> sh = ShowYield() >>> type(sh) <type 'generator'> >>> for i in sh: ... print i ... 0 1 4 9 16
用yield而不是return返
4000
回的函数,在执行sh = ShowYield()时没有调用这个函数,而是在for i in sh中每执行一次就运行一遍def中的循环,把下一个值返回出来。
with
with常常用在对资源的访问,用来应对异常的,即使访问出现异常,也会完成资源的释放,比如关闭文件f.close()或者线程的锁的释放。常常用在打开文件的过程中:
f = open('sometxt.txt') data = f.read() f.close() # 上述没有异常处理,比如文件打不开,而且需要手动close文件的handle,用with就好多了: with open('sometxt.txt') as f: data = f.read()
其他
if CONDITION: VAL = V1 else: VAL = V2
可以写成:
VAL = V1 if CONDITION else V2
2018年03月01日00:04:47
相关文章推荐
- 个人随手笔记:关于python的一些问题
- python 关于tuple的一些小笔记
- Python学习笔记(六)关于日期的一些操作
- 关于python的一些笔记
- 一些关于Python的基础知识 - 千月的python linux 系统管理指南学习笔记(3)
- python关于list的一些小笔记
- python 笔记 12月18日关于 字符串 列表 元组 字典的一些用法和增删改查
- python 初体验,以及关于python项目的一些设想
- 学Python中的一些笔记
- 《学习opencv》笔记——关于一些绘图的函数
- 关于Python 浅拷贝与深拷贝的一些理解
- 视频会议中关于混音算法的一些笔记
- Python学习笔记——一些常用函数、常见错误总结
- python的一些学习笔记
- 轻松python之文件专题-关于zip文件的一些操作
- python学习的一些笔记
- 关于web学习的一些笔记
- python学习笔记--关于编码
- 关于servlet+jsp+java实现Web登陆页界面的一些笔记(一)
- 关于异步刷新的一些小笔记