高级特性
1、切片
1.1、对于获取指定索引范围的操作可以用切片
- 比如L[0:3]。获取前三个元素;若第一个索引是0,也可以用L[:3]。tuple也可以用切片操作,获取的结果仍然是tuple。字符串也可以看做是一种list,每个元素就是一个字符。[::2]每2个数取一个。
2、迭代
- python的for循环可以用在所有可迭代对象上,无论有无下标。
- 迭代value,可以用for value in dict.values(),同时迭代key和value:for k,v in dict.items()。
- 可以迭代字符串。
- 判断一个对象是否为可迭代对象可以用collections模块的Iterable类型判断:isinstance(‘abc’, Iterable)。enumerate函数可以把一个list
3、列表生成式
- 是python内置的创建list的生成式。生成1-10的list时,可以使用list(range(1,11)).
- range(2, 101, 2)为100以内的偶数。
- print([x * x * x for x in range(1,11) if x % 2 == 0])
- print([m + n for m in [‘A’,‘B’,‘C’] for n in [‘X’,‘Y’,‘Z’]])
- 判断是否为字符串isinstance(x,str)。
4、生成器
- 一边循环一边计算的机制称为生成器:generator
- 创建方法:把一个列表生成器的[]改为()。可以通过next()函数获得generator的下一个返回值,直到没有元素了,抛出StopIteration的错误。可以使用for循环获取每个元素。
- 函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield返回,
5、迭代器
- 可以直接作用于for循环的对象统称为可迭代对象:Iterable对象。同样可以用isinstance来判断类型。
- 可以被next()函数调用并不断返回下一个值得对象称为迭代器:Iterator。
- 生成器都是Iterator对象,但是list、dict、str虽然是Iterable,却不是Iterator。可以使用iter()函数将其变为Iterator。
- Iterator只有在需要返回下一个数据时才会进行计算。