日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

生成器函数学习笔记

發(fā)布時間:2025/4/5 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成器函数学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

生成器函數(shù)學(xué)習(xí)筆記

  • Fluent Python真的是一本經(jīng)典之作。
    • 演示 itertools.accumulate 函數(shù)的幾個用法
    • 演示用于映射的生成器函數(shù)
    • itertools.product 生成器函數(shù)

Fluent Python真的是一本經(jīng)典之作。

演示 itertools.accumulate 函數(shù)的幾個用法

>>> sample = [5, 4, 2, 8, 7, 6, 3, 0, 9, 1] >>> import itertools >>> list(itertools.accumulate(sample)) # 計(jì)算總和[5, 9, 11, 19, 26, 32, 35, 35, 44, 45] >>> list(itertools.accumulate(sample, min)) # 計(jì)算最小值[5, 4, 2, 2, 2, 2, 2, 0, 0, 0] >>> list(itertools.accumulate(sample, max)) # 計(jì)算最大值[5, 5, 5, 8, 8, 8, 8, 8, 9, 9] >>> import operator >>> list(itertools.accumulate(sample, operator.mul)) # 計(jì)算乘積[5, 20, 40, 320, 2240, 13440, 40320, 0, 0, 0] >>> list(itertools.accumulate(range(1, 11), operator.mul)) [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800] # 從 1! 到 10!,計(jì)算各個數(shù)的階乘

演示用于映射的生成器函數(shù)

>>> list(enumerate('albatroz', 1)) # 從 1 開始,為單詞中的字母編號。[(1, 'a'), (2, 'l'), (3, 'b'), (4, 'a'), (5, 't'), (6, 'r'), (7, 'o'), (8, 'z')] >>> import operator >>> list(map(operator.mul, range(11), range(11))) # 從 0 到 10,計(jì)算各個整數(shù)的平方。[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> list(map(operator.mul, range(11), [2, 4, 8])) # 計(jì)算兩個可迭代對象中對應(yīng)位置上的兩個元素之積,元素最少的那 個可迭代對象到頭后就停止。[0, 4, 16] >>> list(map(lambda a, b: (a, b), range(11), [2, 4, 8])) # 作用等同于內(nèi)置的 zip 函數(shù)。[(0, 2), (1, 4), (2, 8)] >>> import itertools >>> list(itertools.starmap(operator.mul, enumerate('albatroz', 1))) # 從 1 開始,根據(jù)字母所在的位置,把字母重復(fù)相應(yīng)的次數(shù)。['a', 'll', 'bbb', 'aaaa', 'ttttt', 'rrrrrr', 'ooooooo', 'zzzzzzzz'] >>> sample = [5, 4, 2, 8, 7, 6, 3, 0, 9, 1] >>> list(itertools.starmap(lambda a, b: b/a, enumerate(itertools.accumulate(sample), 1))) # 計(jì)算平均值。[5.0, 4.5, 3.6666666666666665, 4.75, 5.2, 5.333333333333333, 5.0, 4.375, 4.888888888888889, 4.5]

itertools.product 生成器函數(shù)

>>> list(itertools.product('ABC', range(2))) # 三個字符的字符串與兩個整數(shù)的值域得到的笛卡兒積是六個元組 (因?yàn)?3 * 2 等于 6)。[('A', 0), ('A', 1), ('B', 0), ('B', 1), ('C', 0), ('C', 1)] >>> suits = 'spades hearts diamonds clubs'.split() >>> list(itertools.product('AK', suits)) # 兩張牌('AK')與四種花色得到的笛卡兒積是八個元組。[('A', 'spades'), ('A', 'hearts'), ('A', 'diamonds'), ('A', 'clubs'), ('K', 'spades'), ('K', 'hearts'), ('K', 'diamonds'), ('K', 'clubs')] >>> list(itertools.product('ABC')) # 如果傳入一個可迭代的對象,product 函數(shù)產(chǎn)出的是一系列只有一 個元素的元組,不是特別有用。[('A',), ('B',), ('C',)] >>> list(itertools.product('ABC', repeat=2)) # repeat=N 關(guān)鍵字參數(shù)告訴 product 函數(shù)重復(fù) N 次處理輸入的各個 可迭代對象。[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')] >>> list(itertools.product(range(2), repeat=3)) [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)] >>> rows = itertools.product('AB', range(2), repeat=2) >>> for row in rows: print(row)... ('A', 0, 'A', 0) ('A', 0, 'A', 1) ('A', 0, 'B', 0) ('A', 0, 'B', 1) ('A', 1, 'A', 0)('A', 1, 'A', 1) ('A', 1, 'B', 0) ('A', 1, 'B', 1) ('B', 0, 'A', 0) ('B', 0, 'A', 1) ('B', 0, 'B', 0) ('B', 0, 'B', 1)('B', 1, 'A', 0) ('B', 1, 'A', 1) ('B', 1, 'B', 0)('B', 1, 'B', 1)

總結(jié)

以上是生活随笔為你收集整理的生成器函数学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。