4 高级特性
4.1 切片 [:]
*注:-- list和tuple,字符串都支持切片
4.2 迭代 Iteration for ... in 及 for ... in if
两个变量迭代时,
例1:数组>>> for x, y in [(1, 1), (2, 4), (3, 9)]: 结果1 1 -- 2 4 -- 3 9
例2:字典>>>d={'x':'A','y':'B','z':'C'} >>> for k,v in d.items(): 或者 [k + '=' + v for k, v in d.items()] 结果y = B--x = A--z = C
4.3 列表生成式
例子 >>> [x * x for x in range(1, 11) if x % 2 == 0];>>> [m + n for m in 'ABC' for n in 'XYZ']
4.4 生成器 generator
- 作用:大量数据处理时,一边循环一边计算; 注意:通过for in循环而不是next()来迭代打印元素
例子:斐波那契数列:
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1
创建的两种方法:
1.由列表改成: 把一个列表生成式的[]改成();
2.由函数改成: 使用yield语句而不是return语句返回结果;
*注:yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行,另外生成器的唯一注意事项就是:生成器只能遍历一次
yield的形象比喻:挤牙膏,从外部每调用一次,“挤”出一行,处理完再“挤”出下一行,再处理,这里说的“挤”,就是yield。
关于yield使用情况及方法: https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/