- 切片
- Python提高切片操作符
- 迭代
- 在给定list或tuple,我们可以通过
for
循环来遍历。 - Python的
for
循环抽象程度高于Java。 - 如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断
- 在给定list或tuple,我们可以通过
python
>from collections import Iterable
>isinstance('abc', Iterable)
>
- 列表生成式
- 列表生成式可以用更短的代码达到循环的效果。
- 写列表生成式时,把要生成的元素
x * x
放到前面,后面跟for
循环,就可以把list创建出来for
循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
python
>[x*x for x in range(1,11) if x%2 == 0]
>[4,16, 36, 64, 100]
>- 还可以使用两层循环
python
>[m+n for m in 'ABC' for n in 'XYZ']
>['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>- 生成器
- 如果列表元素可以按照某种算法推算出来,从而节省大量的空间。这种一边循环一边计算的机制,称为生成器:generator。
- 创建
L
和g
的区别仅在于最外层的[]
和()
,L
是一个list,而g
是一个generator。- 打印生成器函数可以使用
next()
,获取下一个返回值。- generator保存的是算法,每次调用
next()
,就计算下一个元素的值,可使用for
循环- 如果一个函数定义中包含
yield
关键字,那么这个函数就不再是一个普通函数,而是一个generator小结
1. 凡是可作用于for
循环的对象都是Iterable
类型;
1. 凡是可作用于next()
函数的对象都是Iterator
类型,它们表示一个惰性计算的序列;
1. 集合数据类型如list
、dict
、str
等是Iterable
但不是Iterator
,不过可以通过iter()
函数获得一个Iterator
对象。