摘要:一個(gè)自定義的迭代器如下可迭代對(duì)象像等可以直接作用于循環(huán)的對(duì)象,稱為可迭代對(duì)象。可迭代對(duì)象實(shí)現(xiàn)了方法用于返回迭代器。
生成器,可迭代對(duì)象,迭代器之間究竟是什么關(guān)系?
用一幅圖來(lái)概括:
1.生成器
定義生成器
方式一:
//區(qū)別于列表生成式 gen = [x*x for x in range(5)] gen = (x*x for x in range(5)) print(gen) //Out:at 0x00000258DC5CD8E0>
方式二:
def fib(): prev, curr = 0, 1 while True: yield curr prev, curr = curr, curr + prev f = fib() print(f) //Out:
定義成功后,我們可以利用next()訪問(wèn)生成器下一個(gè)元素
print(next(gen)) //0 print(next(gen)) //1 ... print(next(gen)) //16 print(next(gen)) //StopIteration
但一般用for循環(huán)遍歷
for n in gen: print(n) //0 1 4 9 16
2.迭代器
任何實(shí)現(xiàn)了__iter__和__next__()方法的對(duì)象都是迭代器。__iter__返回迭代器自身,__next__返回容器中的下一個(gè)值。所以生成器是特殊的迭代器,她內(nèi)部具有這兩種方法。
一個(gè)自定義的迭代器如下:
class Fib: def __init__(self): self.prev = 0 self.curr = 1 def __iter__(self): return self def __next__(self): value = self.curr self.curr += self.prev self.prev = value return value f = Fib() count = 1 for n in f: print(n) count = count+1 if count>=10: break //Out:1 1 2 3 5 8 13 21 34
3.可迭代對(duì)象
像list,tuple,set,dict,str等可以直接作用于for循環(huán)的對(duì)象,稱為可迭代對(duì)象。可迭代對(duì)象實(shí)現(xiàn)了__iter__方法,用于返回迭代器。
demo = [1,2,3,4] print(isinstance(demo, Iterable)) //True iter_object = iter(demo) print(iter_object) //
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41347.html
摘要:例如,以下對(duì)兩個(gè)的相應(yīng)元素求和這個(gè)例子很好的解釋了如何構(gòu)建中所謂的迭代器代數(shù)的函數(shù)的含義。為簡(jiǎn)單起見(jiàn),假設(shè)輸入的長(zhǎng)度可被整除。接受兩個(gè)參數(shù)一個(gè)可迭代的正整數(shù)最終會(huì)在中個(gè)元素的所有組合的元組上產(chǎn)生一個(gè)迭代器。 前言 大家好,今天想和大家分享一下我的itertools學(xué)習(xí)體驗(yàn)及心得,itertools是一個(gè)Python的自帶庫(kù),內(nèi)含多種非常實(shí)用的方法,我簡(jiǎn)單學(xué)習(xí)了一下,發(fā)現(xiàn)可以大大提升工作...
摘要:本文重點(diǎn)掌握可迭代的對(duì)象的定義掌握可迭代對(duì)象迭代器與生成器之間的關(guān)系和異同熟悉標(biāo)準(zhǔn)庫(kù)中生成器。二迭代器迭代器介紹迭代器用于從集合中取出元素的對(duì)象。若想再次迭代須重建迭代器。迭代器檢查方式調(diào)用,。區(qū)別可迭代的對(duì)象不是迭代器。 導(dǎo)語(yǔ):本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之控制流程篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門Python的朋友們可以來(lái)一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、掌握可迭代的對(duì)象的...
摘要:為什么不更規(guī)范點(diǎn),令生成的是迭代器呢關(guān)于這個(gè)問(wèn)題,我沒(méi)找到官方解釋,以下純屬個(gè)人觀點(diǎn)。類型是什么以上是我對(duì)為什么不產(chǎn)生迭代器的一種解答。小結(jié)回顧全文,我得到了兩個(gè)偏冷門的結(jié)論是可迭代對(duì)象而不是迭代器對(duì)象是不可變的等差序列。 showImg(https://segmentfault.com/img/bVbmKjd?w=6000&h=4000); 迭代器是 23 種設(shè)計(jì)模式中最常用的一種(...
閱讀 3807·2023-04-25 19:07
閱讀 3553·2021-11-22 12:02
閱讀 3138·2021-10-12 10:11
閱讀 3907·2021-09-03 10:49
閱讀 2891·2019-08-30 13:21
閱讀 2997·2019-08-30 11:14
閱讀 2089·2019-08-29 15:40
閱讀 2872·2019-08-28 18:29