加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python基础6之迭代器&生成器、json&pickle数据序列化

发布时间:2020-12-16 23:55:41 所属栏目:Python 来源:网络整理
导读:内容概要: 一、生成器 二、迭代器 三、jsonpickle数据序列化 table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0" tr tdspan style="font-size: 16px;"一、生成器generator /td /tr /table >>> [ i*2 i ra
<tr>
<td><span style="font-size: 16px;">一、生成器generator</td>
</tr></table>

>>> [ i*2 i range(62,10]

当然还有其他方法:

>>> a=map( x:x*2,range(6>>> i 2 4 6 8 10

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。

>>> ( i*2 i range(6 at 0x000000000106B360>

当我们把列表生成式变成了生产器,它会有__next__()方法(在2.7中是next()),此时我们每调用一次,就会生成一次数据:

>>> a=( i*2 i range(6>>> a.>>> a.2 >>> a.4 >>> a.6 >>>

普通的生成器

定义:yield关键字,那么这个函数就不再是一个普通函数,而是一个generator

yield作用:使函数状态停留在yield关键字执行完之后的状态,并返回当前的迭代值,当我们使用next方法的时候,会重新唤醒该函数,并从之前保留的状态继续执行下去yield下面的代码;

后续还提到send方法,作用是给yield发送返回数据,让我们来看看普通生成器。

=1 a<10=+=1=(a.()) ((a.) (a.1====24

?通常我们在使用的生成器的时候并不使用next的方法,而是使用for循环取得返回值(tips:当生成器执行到最后时候使用next方法会抛出StopIteration异常,而for循环不会。);

=1 a<10+=1 i 1 2 3 4 5 6 7 8 9

<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">

<tr>
<td><span style="font-size: 16px;">二、迭代器</td>
</tr></table>

可迭代对象(Iterable)):可以被for循环的对象或者数据类型叫做可迭代对象,所以像listtupledictsetstr、generator都是可迭代对象,这些可迭代对象可以通过iter()方法成为迭代器;

迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器,生成器是迭代器,但迭代器不一定是生成器;

可以使用isinstance()判断一个对象是否是Iterator对象

>>> collections >>> isinstance([],Iterator) >>> isinstance([],Iterable) >>> isinstance((i*2 i range(6)),Iterator) >>> isinstance((i*2 i range(6

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

内容概要:

一、生成器

二、迭代器

三、json&pickle数据序列化

<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">

    推荐文章
      热点阅读