乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python itertools 模塊講解

       印度阿三17 2019-08-09

      1、介紹
      itertools 是python的迭代器模塊,itertools提供的工具相當(dāng)高效且節(jié)省內(nèi)存。
      使用這些工具,你將能夠創(chuàng)建自己定制的迭代器用于高效率的循環(huán)。
      - 無限迭代器
       itertools包自帶了三個可以無限迭代的迭代器。這意味著,當(dāng)你使用他們時,你要知道要的到底是最終會停止的迭代器,還是需要無限地迭代鞋去。
      (1)count(初值=0, 步長=1):count 迭代器會返回從傳入的起始參數(shù)開始的均勻間隔的數(shù)值。count 也可以接收指定的步長參數(shù)。我們來看一個簡單的例子:

      '''
      遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 
      尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書!
      '''
      >>> from itertools import count
      >>> for i in count(10): #從10開始無限循環(huán)
      ... if i > 20: 
      ... break
      ... else:
      ... print(i)
      ... 
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20

      (2)islice(count(10), 5):從 10 開始,輸出 5 個元素后結(jié)束。islice 的第二個參數(shù)控制何時停止迭代。但其含義并不是”達(dá)到數(shù)字 5 時停止“,而是”當(dāng)?shù)?5 次之后停止“。

      >>> from itertools import islice
      >>> for i in islice(count(10), 5):
      ... print(i)
      ... 
      10
      11
      12
      13
      14

      (3)cycle:這里我們創(chuàng)建了一個 for 循環(huán),使其在三個字母 XYZ 間無限循環(huán)。當(dāng)然,我們并不真地想要永遠(yuǎn)循環(huán)下去,所以我們添加了一個簡單的計數(shù)器來跳出循環(huán)。

      '''
      遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 
      尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書!
      '''
      >>> from itertools import cycle
      >>> count = 0
      >>> for item in cycle('XYZ'):
      ... if count > 7:
      ... break
      ... print(item)
      ... count  = 1
      ... 
      X
      Y
      Z
      X
      Y
      Z
      X
      Y

      - 可終止迭代器
      (1)accumulate(可迭代對象[, 函數(shù)])
         accumulate 迭代器將返回累計求和結(jié)果,或者傳入兩個參數(shù)的話,由傳入的函數(shù)累積計算的結(jié)果。默認(rèn)設(shè)定為相加,我們趕快試一試吧:

      >> from itertools import accumulate
      >>> list(accumulate(range(10)))
      [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

        這里,我們 導(dǎo)入了 accumulate,然后傳入 10 個數(shù)字,0-9。迭代器將傳入數(shù)字依次累加,所以第一個是 0 ,第二個是 0 1, 第三個是 1 2,如此下去?,F(xiàn)在我們導(dǎo)入 operator 模塊,然后添加進去:

      >>> import operator
      >>> list(accumulate(range(1, 5), operator.mul))
      [1, 2, 6, 24]

        這里我們傳入了數(shù)字 1-4 到 accumulate 迭代器中。我們還傳入了一個函數(shù):operator.mul,這個函數(shù)將接收的參數(shù)相乘。所以每一次迭代,迭代器將以乘法代替除法(1×1=1, 1×2=2, 2×3=6, 以此類推)。
        accumulate 的文檔中給出了其他一些有趣的例子,例如貸款分期償還,混沌遞推關(guān)系等。這絕對值得你花時間去看一看。
      (2)chain(*可迭代對象)
         chain 迭代器能夠?qū)⒍鄠€可迭代對象合并成一個更長的可迭代對象。實際上,我參與的一個項目中最近就需要這一功能。我有一個列表,里面已經(jīng)包含一些元素,接著想把另外兩個列表添加到最初那個列表中。注意,我們想添加的是兩個列表的元素。最初,我是這樣做的:
      方式一:

      '''
      遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 
      尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書!
      '''
      >>> my_list = ['foo', 'bar']
      >>> numbers = list(range(5))
      >>> cmd = ['ls', '/some/dir']
      >>> my_list.append(cmd)
      >>> my_list.append(numbers)
      >>> my_list
      ['foo', 'bar', ['ls', '/some/dir'], [0, 1, 2, 3, 4]]

         這并不是我想要的。itertools 模塊提供一個優(yōu)雅得多的方法用chain 來合并這些列表:
      方式二:

      >>> from itertools import chain
      >>> my_list = list(chain(['foo', 'bar'], cmd, numbers))
      >>> my_list
      ['foo', 'bar', 'ls', '/some/dir', 0, 1, 2, 3, 4]

         許多聰明的讀者可能想到了,實際上不使用 itertools,也有其他方法能夠?qū)崿F(xiàn)這一要求。你可以這樣做:
      方式三:

      '''
      遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 
      尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書!
      '''
      >>> my_list = ['foo', 'bar']
      >>> my_list  = cmd   numbers
      >>> my_list
      ['foo', 'bar', 'ls', '/some/dir', 0, 1, 2, 3, 4]

         這些方法當(dāng)然都是可行的。在我知道 chain 之前,我可能會這樣做,但我個人認(rèn)為這個例子中, chain 更為優(yōu)雅,也更容易理解。

      來源:https://www./content-1-384751.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多