python3 函数 高级特性

一.迭代

给定一个列表或者元组,我们可以通过for循环来遍历列表或者元组,这种遍历称为迭代。

字典迭代:默认key值进行迭代


字典实现value值迭代:


字典实现key值与value值迭代:


二. 如何判断一个对象是否为迭代对象?

通过collections模块的Iterable函数判断:


三.对于列表实现类似java下标循环?

利用python的枚举方法将索引值与元素对应


四。  列表生成式

1.用来创建列表的生成式,代码非常简单。


还可以添加if语句进行条件筛选(求取偶数平方和)


五.  生成器

       通过列表生成式,我们可以直接创建列表,但是受到内存限制,列表容量有限。对于容量很大的元素列表,如果我们仅仅使用列表的前几个元素,后面元素就会浪费并且也占用很大内存资源。

      将列表用某种算法推算出来,不用创建完整的列表,节省大量的空间,将这种一边循环一边计算的机制,称为加速器(generator)。

1.创建生成器;将列表生成式的[]改成()


返回的结果为生成器对象;

2.next( 生成器)打开生产器的内容;但是每调用一次出现一个数字,如果需要很多元素就需要调用很多次,这种方法很麻烦。


3,针对上面方法,我们一般都是用for循环



4.如果一个函数定义包含yield关键字,那么函数不在是普通函数,而是一个生成器;

函数是按照顺序执行,遇到return语句或者最后一行函数语句就返回。但是生成器函数,遇见yield语句就返回,当再次执行时从上次返回位置的yield语句执行;


生成器H函数,在执行过成中,遇到yield不在执行,下次执行继续执行。

六.迭代器

直接作用于for循环的对象统称为可迭代对象(Iterable),而生成器可以被next()函数不断调用并返回下一个值,直至最后抛出StopIreration错误表示无法继续返回下一个值。这种可以被naxt()函数调用并不断返回下一个值对象称为Iterator对象。

        python的Iterator对象表示一个数据流,Iterator对象可以被next()函数调用返回下一个值,可以将这个数据流看作一个有序序列,但是我们不知道序列的长度,只有不断调用才计算下一个值,所以Iterator计算时惰性的。

猜你喜欢

转载自blog.csdn.net/weixin_39249306/article/details/80683874