python的高级特性

切片(slice)

切片提供了一种对list列表,tuple元组,str字符串,新的获取方式,以往使用下标或者索引的操作可以被代替。

语法:对象[a:b:c]  代表从a开始检索(当从0开始检索时可省略),到b结束,但不包括b,c代表步长。

迭代(Iteration)

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

在python中用for...in...来迭代

list和tuple迭代

L=[1,2,3,4,5]

for l in L:

    print(l)‘

dict迭代

key迭代

L={'a':1,'b':2,'c':3} 

for key in L:

    print(key)

value迭代

L={'a':1,'b':2,'c':3} 

for value in L.values():

    print(value )

也可key value同时迭代,使用到items()函数。

for k, v in L.items() 

生成器

在Python中,一边循环一边计算的机制,称为生成器:generator。

列表的容量有限,会受到内存的限制,生成器解决了这一问题,生成器中保留着得到列表所有元素的算法,当需要时可以用next()函数一一生成元素,也可通过for循环一次性得到查看所有生成元素。

简而言之,生成器中保留的是算法,而非元素,使用时生成器可使用next()函数来调用生成器内部的算法计算出各个元素。

迭代器 Iterator

迭代器是一种状态对象,不使用时处于休眠状态,当调用next()函数时,迭代器会退出休眠状态,去取下一个值。迭代器就像一个懒加载的工厂,等到有人需要的时候才给它生成值返回,没调用的时候就处于休眠状态等待下一次调用。

我们已经知道,可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如listtupledictsetstr等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

但集合数据类型,如listtupledictsetstr等并不是迭代器,根据迭代器的含义可以认为迭代器对象都是一个未知的数据流,数据流的大小长度未知,只有通过next()函数才能知道下一个元素或者下一个元素是否存在,而集合数据类型是已知的对象,其长度和大小已知。集合数据类型可以通过函数iter()来转换为迭代器对象。

猜你喜欢

转载自blog.csdn.net/IPI715718/article/details/81569961
今日推荐