欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python中的迭代是什么

這篇文章主要介紹python中的迭代是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

為興寧等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及興寧網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、興寧網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

迭代:是通過(guò)重復(fù)執(zhí)行的代碼處理相似的數(shù)據(jù)集的過(guò)程,并且本次迭代的處理數(shù)據(jù)要依賴上一次的結(jié)果繼續(xù)往下做,上一次產(chǎn)生的結(jié)果為下一次產(chǎn)生結(jié)果的初始狀態(tài),如果中途有任何停頓,都不能算是迭代。例如:

(1)非迭代例子

loop = 0
while loop < 3:
    print("Hello world!")
    loop += 1

(2)迭代例子

loop = 0
while loop < 3:
    print(loop)
loop += 1

例1僅是循環(huán)3次輸出" Hello world!",輸出的數(shù)據(jù)不依賴上一次的數(shù)據(jù),因此不是跌代。

在python中通常用for …in遍歷元組、列表、字典。而for … in后面需要那個(gè)可迭代對(duì)象。那么在python中什么是可迭代對(duì)象呢?

在python中

(1)可迭代對(duì)象(iterable),是指擁有了__iter__的內(nèi)置方法的對(duì)象。

(2)迭代器(iterator) ,是指擁__iter__與__next__方法的對(duì)象。

在這里__iner__需要返回一個(gè)迭代器對(duì)象,__next__方法可以取出值,并停留到取值的位置,以便可取出下一個(gè)值。

在這里可以看出一個(gè)迭代器一定是一個(gè)可迭代對(duì)象,而一個(gè)可迭代對(duì)象不一定是迭代器。

在python中可以用isinstance(object,Iterable)判斷對(duì)象是否為可迭代對(duì)象。用isinstance(object,Iterator)判斷對(duì)象是否為迭代器。

In [1]: from collections import Iterable
In [2]: from collections import Iterator
In [3]: isinstance(1,Iterable)
Out[3]: False
In [4]: isinstance(1,Iterator)
Out[4]: False
In [5]: isinstance((1,2),Iterable)
Out[5]: True
In [6]: isinstance((1,2),Iterator)
Out[6]: False
In [7]: class D():
   ...:     def __iter__(self):
   ...:         pass
   ...:     def __next__(self):
   ...:         pass
   ...:     
In [8]: d = D()
In [9]: isinstance(d,Iterator)
Out[9]: True
In [10]:

python實(shí)現(xiàn)迭代:列如,用迭代實(shí)現(xiàn)斐波那契數(shù)列:

class Fibonacci(object):
    def __init__(self,all_num):
        """初始化類屬性"""
        #定義一個(gè)實(shí)例屬性,存放要實(shí)現(xiàn)斐波那契數(shù)列的個(gè)數(shù)
        self.all_num = all_num
        
        #定義count實(shí)例屬性,作為迭代的退出條件判斷
        self.count = 0
        
        #實(shí)現(xiàn)斐波那契數(shù)列定義a=0,b=1
        self.a = 0
        self.b = 1
    def __iter__(self):
        """在這里self所指3對(duì)象本身是一個(gè)
        迭代器,所以可以返回自身
        """
        return self
    def __next__(self):
        """
        next,實(shí)現(xiàn)迭代返回結(jié)果
         
        """
        #判斷輸出的數(shù)列個(gè)數(shù),是否小于需要的數(shù)列個(gè)數(shù)
        if self.count < self.all_num:
            
            #rect最終要輸出的斐波那契數(shù)列
            rect = self.a
            
            #在這里重復(fù)讓a=b,b=a+b,來(lái)實(shí)現(xiàn)斐波那契數(shù)列
            self.a, self.b = self.b, self.a + self.b
            self.count += 1
            return rect
        else:
            #當(dāng)?shù)龅絊topIteration異常時(shí)便會(huì)停止迭代
            raise StopIteration
fibonacci = Fibonacci(10)
for fibo_num in fibonacci:
    print(fibo_num)

迭代:通過(guò)存儲(chǔ)一種生成方式,而不是生成結(jié)果,來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。從而極大的節(jié)約了存儲(chǔ)空間。

注意:

在python2.x中 range()函數(shù)后面存的是一個(gè)列表,xrange()存的是一個(gè)可迭代對(duì)象。而在python3.x中range()存的是一個(gè)迭代對(duì)象,相當(dāng)于python2.x中的xrange()。

以上是python中的迭代是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:python中的迭代是什么
鏈接分享:http://www.chinadenli.net/article24/pispce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)微信小程序企業(yè)網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)