1. 切片
取一个list或者tuple中的几个元素是很常见的。
前面也举过例子。
这种方法面对较多元素时,就不实用了。
所以就有了切片。
L[0:3]表示从0开始索引,直到索引到3为止,但不包括3。元素个数可以用3-0=3,三个元素。
可以从任意位置开始,倒数切片等。
对于大量数据,切片处理很方便。
下面举例几种:
m[x:y:n],n为可以每隔n个取一个。
字符串也可以看作一种list,同样可以切片操作。
2.迭代
如果给定一个list或者tuple,可以用for循环来遍历这个list或者tuple,这种遍历,就叫迭代。
python中的for不仅可以用在list、tuple上,还可以用在别的可以迭代的对象上,比如字典dict。
对于value或者key_value
可以用collections中的Iterable判断是否可以迭代。
python内置的enumerate函数可以把一个list变成索引——元素对。
3.列表生成式
列表生成式既List Comprehensions,是python内置的非常强大的用来创建list的生成式。
用来生成[11,22,…,10*10]的列表,生成式很轻松一行搞定。
还可以加if语句田间条件筛选判断。
还可以双层循环,生成全排列。
for循环可以对多个对象进行迭代。
列表生成式也可以。
if else 在生成式里面的应用,这里注意,if else 连用只能在for之前作为表达式,if在后面是过滤条件。
4.生成器
一边循环一边计算的机制,称为生成器:generator
创建方法一:
把列表生成器的[ ]改成( )就好了
生成器需要用next()一个一个打印出来。直到最后一个,没有元素的时候会报错。
另一种方法就是 yield语句
可以发现
generator和函数执行流程不一样,函数是顺序执行,遇到ruturn或者最后一行返回,而变成generator的函数,在每次调用yield的地方返回,再次执行时从上次返回yield的地方执行。
5.迭代器
可以直接用于for循环的数据类型有以下几种,一类是集合数据类型,如list、tuple、dict、set、str等
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象,Iterable。
可以被next()函数调用并不断返回下一个值的对象成为迭代器:Iterator。
生成器都是Iterable。但list、dict、str虽然是Iterable但不是Iterator。可以用iter()转化。
2020.4.9