Python教程之無(wú)限迭代器的使用詳解
Python的Itetool是一個(gè)模塊,它提供了各種函數(shù),這些函數(shù)在迭代器上工作以產(chǎn)生復(fù)雜的迭代器。該模塊作為一個(gè)快速,內(nèi)存效率的工具,可以單獨(dú)使用或組合使用以形成迭代器代數(shù)。
例如,假設(shè)有兩個(gè)列表,并且您想要將它們的元素相乘。有幾種方法可以實(shí)現(xiàn)這一目標(biāo)??梢允褂脴闼氐姆椒?,即同時(shí)迭代列表的元素并將它們相乘。另一種方法是使用 map 函數(shù),即通過(guò)將 mul 運(yùn)算符作為第一個(gè)參數(shù)傳遞給 map 函數(shù),并將 List 作為該函數(shù)的第二個(gè)和第三個(gè)參數(shù)傳遞。讓我們看看每種方法所花費(fèi)的時(shí)間。
# 演示迭代器模塊的Python程序 import operator import time # 定義列表 L1 = [1, 2, 3] L2 = [2, 3, 4] # 映射函數(shù)之前的開(kāi)始時(shí)間 t1 = time.time() # 計(jì)算結(jié)果 a, b, c = map(operator.mul, L1, L2) # 映射函數(shù)后的結(jié)束時(shí)間 t2 = time.time() # 映射函數(shù)花費(fèi)的時(shí)間 print("Result:", a, b, c) print("Time taken by map function: %.6f" %(t2 - t1)) # 初始方法之前的開(kāi)始時(shí)間 t1 = time.time() # 使用for循環(huán)計(jì)算結(jié)果 print("Result:", end = " ") for i in range(3): print(L1[i] * L2[i], end = " ") # 樸素方法后的結(jié)束時(shí)間 t2 = time.time() print("\nTime taken by for loop: %.6f" %(t2 - t1))
輸出:
Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12
Time taken by for loop: 0.000014
在上面的示例中,可以看出 map 函數(shù)所花費(fèi)的時(shí)間大約是 for 循環(huán)所用時(shí)間的一半。這表明迭代工具是快速、內(nèi)存高效的工具。
此模塊提供的不同類型的迭代器包括:
- 無(wú)限迭代器
- 組合迭代器
- 終止迭代器
無(wú)限迭代器
Python 中的迭代器是可以與“for in 循環(huán)”一起使用的任何 Python 類型。Python 列表、元組、字典和集合都是內(nèi)置迭代器的示例。但是迭代器對(duì)象不必窮盡,有時(shí)它可以是無(wú)限的。這種類型的迭代器稱為無(wú)限迭代器。
Python 提供了三種類型的無(wú)限迭代器:
計(jì)數(shù)(開(kāi)始,步驟)
此迭代器從“開(kāi)始”數(shù)字開(kāi)始打印并無(wú)限打印。如果提到步驟,則跳過(guò)數(shù)字,否則默認(rèn)情況下步驟為1。請(qǐng)參閱下面的示例,了解它與 for in 循環(huán)的用法。
例:
# 演示無(wú)限迭代器的Python程序 import itertools # for 循環(huán) for i in itertools.count(5, 5): if i == 35: break else: print(i, end =" ")
輸出:
5 10 15 20 25 30
循環(huán)(可迭代)
此迭代器按傳遞的容器中的順序打印所有值。當(dāng)所有元素都以循環(huán)方式打印時(shí),它將再次從頭開(kāi)始重新開(kāi)始打印。
示例 1:
# 演示無(wú)限迭代器的Python程序 import itertools count = 0 # for 循環(huán) for i in itertools.cycle('AB'): if count > 7: break else: print(i, end = " ") count += 1
輸出:
A B A B A B A B
示例 2: 使用下一個(gè)函數(shù)。
# 演示無(wú)限迭代器的Python程序 import itertools l = ['Geeks', 'for', 'Geeks'] # 定義迭代器 iterators = itertools.cycle(l) # for 循環(huán) for i in range(6): # Using next function print(next(iterators), end = " ")
組合迭代器
輸出:
Geeks for Geeks Geeks for Geeks
重復(fù)(值、數(shù))
此迭代器重復(fù)打印傳遞的值無(wú)限次。如果提到可選關(guān)鍵字 num,則它會(huì)重復(fù)打印 num 次數(shù)。
例:
# 演示 repeat() 工作的Python代碼 # 為迭代器操作導(dǎo)入“itertools” import itertools # 使用 repeat() 重復(fù)打印數(shù)字 print ("Printing the numbers repeatedly : ") print (list(itertools.repeat(25, 4)))
輸出:
Printing the numbers repeatedly :
[25, 25, 25, 25]
到此這篇關(guān)于Python教程之無(wú)限迭代器的使用詳解的文章就介紹到這了,更多相關(guān)Python無(wú)限迭代器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
LyScript實(shí)現(xiàn)Hook改寫MessageBox的方法詳解
LyScript可實(shí)現(xiàn)自定義匯編指令的替換功能。用戶可自行編寫匯編指令,將程序中特定的通用函數(shù)進(jìn)行功能改寫與轉(zhuǎn)向操作,此功能原理是簡(jiǎn)單的Hook操作。本文將詳細(xì)介紹Hook改寫MessageBox的方法,感興趣的可以了解一下2022-09-09Python itertools庫(kù)高效迭代藝術(shù)實(shí)例探索
Python 中的?itertools?庫(kù)為迭代器操作提供了豐富的工具集,使得處理迭代對(duì)象變得更加高效和靈活,本篇文章將深入討itertools庫(kù)的常用方法,通過(guò)詳實(shí)的示例代碼演示其在解決各種問(wèn)題中的應(yīng)用2024-01-01Python實(shí)現(xiàn)的爬取百度貼吧圖片功能完整示例
這篇文章主要介紹了Python實(shí)現(xiàn)的爬取百度貼吧圖片功能,結(jié)合完整實(shí)例形式分析了Python實(shí)現(xiàn)的百度貼吧圖片爬蟲相關(guān)操作技巧,需要的朋友可以參考下2019-05-05python找出一個(gè)列表中相同元素的多個(gè)索引實(shí)例
今天小編就為大家分享一篇python找出一個(gè)列表中相同元素的多個(gè)索引實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python網(wǎng)絡(luò)編程實(shí)例簡(jiǎn)析
這篇文章主要介紹了python網(wǎng)絡(luò)編程,有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-09-09Django使用httpresponse返回用戶頭像實(shí)例代碼
這篇文章主要介紹了Django使用httpresponse返回用戶頭像實(shí)例代碼2018-01-01python kafka 多線程消費(fèi)者&手動(dòng)提交實(shí)例
今天小編就為大家分享一篇python kafka 多線程消費(fèi)者&手動(dòng)提交實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12python中的隨機(jī)數(shù)種子seed()用法說(shuō)明
這篇文章主要介紹了python中的隨機(jī)數(shù)種子seed()用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07