最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的內建模塊itertools的使用解析

 更新時間:2023年09月22日 11:29:45   作者:生有涯,知無涯  
這篇文章主要介紹了Python的內建模塊itertools的使用解析,itertools是python的迭代器模塊,itertools提供的工具相當高效且節(jié)省內存,Python的內建模塊itertools提供了非常有用的用于操作迭代對象的函數,需要的朋友可以參考下

itertools模塊

itertools 是python的迭代器模塊,itertools提供的工具相當高效且節(jié)省內存。Python的內建模塊itertools提供了非常有用的用于操作迭代對象的函數。

使用這些工具,你將能夠創(chuàng)建自己定制的迭代器用于高效率的循環(huán)。

無限迭代器

(1)count(初值=0, 步長=1):

count 迭代器會返回從傳入的起始參數開始的均勻間隔的數值。count 也可以接收指定的步長參數。

"""count(初值,步長)"""
from itertools import count
for i in count(10, 2):  # 從10開始,每步長隔2,無限循環(huán)(此案例演示大于100退出)
    if i > 100:
        break
    else:
        print(i)   # 打印結果:10,12,14,16,18,...,98,100

(2)islice(iterable,start,stop,步長)

從 10 開始,輸出 5 個元素后結束。islice 的第二個參數控制何時停止迭代。但其含義并不是”達到數字 5 時停止“,而是”當迭代了 5 次之后停止“。

"""isslice(迭代器,迭代次數)"""
from itertools import islice
for i in islice(count(10), 5):
    print(i)   # 打印結果:10,11,12,13,14
for j in islice([1, 2, 3, 4, 5], 2):
    print(j)   # 打印結果:1,2 

(3)cycle:

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

from itertools import cycle
count = 0
for item in cycle('XYZ'):
    if count > 7:
        break
    print(item)   # X,Y,Z,X,Y,Z,X,Y
    count += 1

(4)repeat():

負責把一個元素無限重復下去,不過如果提供第二個參數就可以限定重復次數:

from itertools import repeat
for i in repeat('1', 5):
    print(i)  # 1,1,1,1,1

可終止迭代器

(1)accumulate(可迭代對象[, 函數])   

accumulate 迭代器將返回累計求和結果,或者傳入兩個參數的話,由傳入的函數累積計算的結果。默認設定為相加

from itertools import accumulate
for i in accumulate(range(7)):
    print(i)  # 0,1,3,6,10,15,21
for i in accumulate([1, 2, 3, 4, 5], lambda x, y: x * y):
    print(i)  # 1,2,6,24,120

(2)chain(*可迭代對象)   

chain 迭代器能夠將多個可迭代對象合并成一個更長的可迭代對象。

from itertools import chain
x = chain(range(3), range(3, 5), [5, 6, 7], (8, 9), '11')
print(list(x))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '1', '1']

(3)groupby() groupby()把迭代器中相鄰的重復元素挑出來放在一起:

from itertools import groupby
for key, group in groupby('AAABBBCCAAA'):
    print(key, list(group))
# 結果:
"""
A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']
"""

也可以使用函數,按照分組函數的值對元素進行分組

from itertools import groupby
x = groupby(range(10), lambda x: x < 5 or x > 8)
for condition, numbers in x:       
    print(condition, list(numbers))
# 結果:
"""
True [0, 1, 2, 3, 4]
False [5, 6, 7, 8]
True [9]
"""

(4)itertools.combinations(可迭代對象,組合個數)

求列表或生成器中指定數目的元素不重復的所有組合。

(5)itertools.combinations_with_replacement(可迭代對象,組合個數) 允許重復元素的組合

from itertools import combinations, combinations_with_replacement
x = combinations(['A', 'B', 'C'], 2)
y = combinations_with_replacement(['A', 'B', 'C'], 2)
print(list(x))  # [('A', 'B'), ('A', 'C'), ('B', 'C')]
print(list(y))  # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

(6)itertools.permutations(可迭代對象,組合個數) 產生指定數目的元素的所有排列(順序有關)

from itertools import permutations
x = permutations(['A', 'B', 'C'], 3)
print(list(x))  # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

itertools中combinations與permutations函數區(qū)別

import itertools
s = [1, 2, 3]
print(itertools.permutations(s, 2))     # 結果是一個迭代器
print(itertools.combinations(s, 2))     # 結果是一個迭代器
print(list(itertools.permutations(s, 2)))  # [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
print(list(itertools.combinations(s, 2)))  # [(1, 2), (1, 3), (2, 3)]

permutations和combinations都是得到一個迭代器。

combinations方法重點在組合,permutations方法重在排列。

到此這篇關于Python的內建模塊itertools的使用解析的文章就介紹到這了,更多相關Python的itertools內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于OpenCV與Python實現的身份證號碼識別案例詳解

    基于OpenCV與Python實現的身份證號碼識別案例詳解

    身份證識別技術主要依賴于計算機視覺和圖像處理技術,通過對身份證圖像進行分析,提取關鍵信息(如身份證號碼、姓名等),這篇文章主要介紹了基于OpenCV與Python實現的身份證號碼識別的相關資料,需要的朋友可以參考下
    2026-01-01
  • python數組如何添加整行或整列

    python數組如何添加整行或整列

    這篇文章主要介紹了python數組如何添加整行或整列問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 5道關于python基礎 while循環(huán)練習題

    5道關于python基礎 while循環(huán)練習題

    這篇文章主要給大家分享的是5道關于python基礎 while循環(huán)練習題,無論學習什么語言,練習都是必不可少的,下面文章的練習題挺精湛的,需要的朋友可以參考一下
    2021-11-11
  • 淺析python連接數據庫的重要事項

    淺析python連接數據庫的重要事項

    這篇文章主要介紹了python連接數據庫的重要事項,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python兩個_多個字典合并相加的實例代碼

    python兩個_多個字典合并相加的實例代碼

    這篇文章主要介紹了python兩個_多個字典合并相加,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • python3 flask實現文件上傳功能

    python3 flask實現文件上傳功能

    這篇文章主要為大家詳細介紹了python3 flask實現文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python+Pygame實戰(zhàn)之文字劇情游戲的實現

    Python+Pygame實戰(zhàn)之文字劇情游戲的實現

    這篇文章主要為大家詳細介紹了如何利用Python和Pygame實現兩款文字劇情游戲——《巨龍之洞》和《太空礦工》,感興趣的小伙伴可以了解一下
    2022-12-12
  • Python?LeNet網絡詳解及pytorch實現

    Python?LeNet網絡詳解及pytorch實現

    LeNet主要用來進行手寫字符的識別與分類,并在美國的銀行中投入了使用。本文主要為大家詳細介紹了LetNet以及通過pytorch實現LetNet,感興趣的小伙伴可以學習一下
    2021-11-11
  • django model通過字典更新數據實例

    django model通過字典更新數據實例

    這篇文章主要介紹了django model通過字典更新數據實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 一分鐘帶你上手Python調用DeepSeek的API

    一分鐘帶你上手Python調用DeepSeek的API

    最近DeepSeek非常火,作為一枚對前言技術非常關注的程序員來說,自然都想對接DeepSeek的API來體驗一把,下面小編就來為大家介紹一下Python如何快速上手調用DeepSeek?API吧
    2025-02-02

最新評論

读书| 恭城| 马公市| 开江县| 道孚县| 三都| 托克托县| 郸城县| 腾冲县| 柳江县| 治多县| 仪陇县| 敦煌市| 寿阳县| 石河子市| 晋城| 三河市| 安阳市| 磐安县| SHOW| 德令哈市| 乐至县| 当阳市| 招远市| 宁晋县| 巴中市| 浠水县| 凌源市| 元氏县| 铅山县| 丰都县| 阿克陶县| 彭州市| 永清县| 眉山市| 南丰县| 古田县| 台北县| 抚顺县| 贵港市| 毕节市|