Python教程之無限迭代器的使用詳解
Python的Itetool是一個模塊,它提供了各種函數(shù),這些函數(shù)在迭代器上工作以產(chǎn)生復(fù)雜的迭代器。該模塊作為一個快速,內(nèi)存效率的工具,可以單獨使用或組合使用以形成迭代器代數(shù)。
例如,假設(shè)有兩個列表,并且您想要將它們的元素相乘。有幾種方法可以實現(xiàn)這一目標(biāo)??梢允褂脴闼氐姆椒?,即同時迭代列表的元素并將它們相乘。另一種方法是使用 map 函數(shù),即通過將 mul 運算符作為第一個參數(shù)傳遞給 map 函數(shù),并將 List 作為該函數(shù)的第二個和第三個參數(shù)傳遞。讓我們看看每種方法所花費的時間。
# 演示迭代器模塊的Python程序
import operator
import time
# 定義列表
L1 = [1, 2, 3]
L2 = [2, 3, 4]
# 映射函數(shù)之前的開始時間
t1 = time.time()
# 計算結(jié)果
a, b, c = map(operator.mul, L1, L2)
# 映射函數(shù)后的結(jié)束時間
t2 = time.time()
# 映射函數(shù)花費的時間
print("Result:", a, b, c)
print("Time taken by map function: %.6f" %(t2 - t1))
# 初始方法之前的開始時間
t1 = time.time()
# 使用for循環(huán)計算結(jié)果
print("Result:", end = " ")
for i in range(3):
print(L1[i] * L2[i], end = " ")
# 樸素方法后的結(jié)束時間
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ù)所花費的時間大約是 for 循環(huán)所用時間的一半。這表明迭代工具是快速、內(nèi)存高效的工具。
此模塊提供的不同類型的迭代器包括:
- 無限迭代器
- 組合迭代器
- 終止迭代器
無限迭代器
Python 中的迭代器是可以與“for in 循環(huán)”一起使用的任何 Python 類型。Python 列表、元組、字典和集合都是內(nèi)置迭代器的示例。但是迭代器對象不必窮盡,有時它可以是無限的。這種類型的迭代器稱為無限迭代器。
Python 提供了三種類型的無限迭代器:
計數(shù)(開始,步驟)
此迭代器從“開始”數(shù)字開始打印并無限打印。如果提到步驟,則跳過數(shù)字,否則默認(rèn)情況下步驟為1。請參閱下面的示例,了解它與 for in 循環(huán)的用法。
例:
# 演示無限迭代器的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)方式打印時,它將再次從頭開始重新開始打印。
示例 1:
# 演示無限迭代器的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: 使用下一個函數(shù)。
# 演示無限迭代器的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ù)打印傳遞的值無限次。如果提到可選關(guān)鍵字 num,則它會重復(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教程之無限迭代器的使用詳解的文章就介紹到這了,更多相關(guān)Python無限迭代器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于python中readlines函數(shù)的參數(shù)hint的相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Python函數(shù)的相關(guān)知識,文章圍繞著python中readlines函數(shù)的參數(shù)hint展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python腳本簡單實現(xiàn)打開默認(rèn)瀏覽器登錄人人和打開QQ的方法
這篇文章主要介紹了Python腳本簡單實現(xiàn)打開默認(rèn)瀏覽器登錄人人和打開QQ的方法,涉及Python針對瀏覽器及應(yīng)用程序的相關(guān)操作技巧,代碼非常簡單實用,需要的朋友可以參考下2016-04-04
python3.6使用SMTP協(xié)議發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python3.6使用SMTP協(xié)議發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05
python實現(xiàn)郵件循環(huán)自動發(fā)件功能
這篇文章主要介紹了python實現(xiàn)郵件循環(huán)自動發(fā)件功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
13行python代碼實現(xiàn)對微信進(jìn)行推送消息的示例代碼
本文主要介紹了13行python代碼實現(xiàn)對微信進(jìn)行推送消息的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

