廖雪峰Python教程学习笔记三-高级特性
来源:互联网 发布:穿衣打扮知乎 编辑:程序博客网 时间:2024/05/16 09:21
1 切片
语法形式:L[start:stop:step]
start 和 stop 是列表下标,包含 start 下标的元素,不包含 stop 下标的元素(左闭右开),step 是步进,即每次取元素的步长,默认值是 1。
e.g.
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']>>> L[0:3]['Michael', 'Sarah', 'Tracy']>>> L[-2:]['Bob', 'Jack']>>> L = range(100)>>> L[0, 1, 2, 3, ..., 99]>>> L[:10:2][0, 2, 4, 6, 8]
2 迭代
如果给定一个list或tuple,我们可以通过for
循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
- Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上,如
dict
。 - 默认情况下,dict迭代的是key。如果要迭代value,可以用
for value in
如果要同时迭代key和value,可以用
d.itervalues(),for k, v in d.iteritems()。
- 任何可迭代对象都可以作用于
for
循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for
循环。
3 列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
要生成[1x1, 2x2, 3x3, ..., 10x10]
,方法一是循环,另一种更简单的方法便是用用列表生成式生成,如下:
>>> [x * x for x in range(1, 11)] #for循环后面还可以加上if判断条件进行限制[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
还可以使用两层循环生成全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。
4 生成器
在Python中,为了生成大型列表时节省内存空间,采用一边循环一边计算的机制,称为生成器(Generator)。
产生生成器一般有两种方法:
1.第一种方法很简单,只要把一个列表生成式的[]
改成()
,就创建了一个generator:
>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x104feab40>
generator保存的是算法,可以使用next()
方法计算得到每一个元素,但更常用的是使用for
循环,因为generator也是可迭代对象:
>>> g = (x * x for x in range(10))>>> for n in g:... print n...0149162536496481
2. 定义generator的另一种方法是在定义时用yield
返回结果。
generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行(有点像函数中断)。
e.g.
>>> def odd():... print 'step 1'... yield 1... print 'step 2'... yield 3... print 'step 3'... yield 5...>>> o = odd()>>> o.next()step 11>>> o.next()step 23>>> o.next()step 35>>> o.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration #执行3次yield后,已经没有yield可以执行了,所以,第4次调用next()就报错。
要理解generator的工作原理,它是在for
循环的过程中不断计算出下一个元素,并在适当的条件结束for
循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for
循环随之结束。
- 廖雪峰Python教程学习笔记三-高级特性
- 廖雪峰python学习笔记4:高级特性
- 读廖雪峰的 Python 教程小结--------Python高级特性
- 廖雪峰Python教程阅读笔记——3. 高级特性
- 廖雪峰Python教程学习笔记
- 廖雪峰python教程学习笔记02
- 廖雪峰Python教程 学习笔记11 面向对象高级编程
- 廖雪峰 Python教程 笔记
- 廖雪峰python学习笔记9:面向对象高级
- python学习笔记(三) - 高级特性
- Python学习笔记(三)高级特性
- Python学习笔记(三)--高级特性
- Python学习笔记(三):高级特性
- 廖雪峰Python教程 学习笔记1 Python简介
- 廖雪峰Python教程 学习笔记2 安装Python
- 廖雪峰Python教程 学习笔记4 Python基础
- 廖雪峰Python的研读笔记(一) Python基础、函数、高级特性
- python 字符串&格式化-----廖雪峰教程学习笔记
- TCP通信丢包原因总结
- linux段错误
- nextLine()和next()方法
- JDBC随记
- 公约数和公倍数
- 廖雪峰Python教程学习笔记三-高级特性
- Jquery FormData文件异步上传 快速指南
- 光线跟踪smallpt详解 (二)
- 报错No mapping found for HTTP request with URI、实现蒙纱,弹出对话框利用load 、编码问题、 jQ的data绑定数据等等遇到的问题
- 交换整数的奇数位和偶数位
- CentOS6.5 JAVA-JDK安装
- 智能指针:auto_ptr 和 scoped_ptr
- 编译PHP5.6 提示configure: error: GD build test failed. Please check the config.log for details.
- ceph ceph.conf 配置流程