機器學(xué)習(xí)服務(wù)提取圖片的特征向量">使用SAP Leonardo上的機器學(xué)習(xí)服務(wù)提取圖片的特征向量
684
2025-04-01
Python編程語言已經(jīng)擴展了創(chuàng)新的方方面面,包括機器學(xué)習(xí),數(shù)據(jù)科學(xué),人工智能等。實現(xiàn)這一壯舉的眾多原因之一是Python迭代器之類的概念,而這些概念正是Python取得編程成功的基石。語。在本文中,我們將通過以下概念來理解Python迭代器:
Iterator vs Iterable
What Are Python Iterators?
Custom Iterators
Infinite Iterators
StopIteration
Python Iterator Examples
迭代器與可迭代
Python中可以用作Iterable對象的對象稱為Iterable。這基本上意味著可以迭代對象中的序列。大多數(shù)Python集合(例如list,dictionary,tuple,sets,甚至range)都可以視為Iterable。
什么是Python迭代器?
Python I加速器是一個包含可數(shù)數(shù)量的值的容器。可以使用迭代器遍歷容器中的值,尤其是列表。
除了遍歷之外,迭代器還提供對容器中數(shù)據(jù)元素的訪問,但它本身并不執(zhí)行?迭代,即,在使用該概念或瑣碎使用術(shù)語時,沒有一定程度的自由。Iterator的?行為幾乎類似于數(shù)據(jù)庫游標(biāo)。這是Python中Iterator的簡單示例。
my_obj = {"Edureka", "Python", "iterator"} iter_obj = iter(my_obj) print(next(iter_obj))
輸出:?Edureka
迭代器是可以與“ for循環(huán)”一起使用的任何類型的Python。任何用作迭代器的對象都必須實現(xiàn)以下方法。
1. __iter __()
在初始化Iterator時調(diào)用它。它應(yīng)該返回一個具有next或__next__方法的對象。
2. __next __()
Iterator的next方法返回Iterable的下一個值。
當(dāng)Iterator與“ for in”循環(huán)一起使用時,在Iterator對象上,for循環(huán)隱式調(diào)用next()。此方法應(yīng)使用StopIteration來指示迭代結(jié)束。這兩種方法一起被稱為迭代器協(xié)議。讓我們嘗試通過一個示例來了解for循環(huán)如何在Python中充當(dāng)?shù)鳌?/p>
for i in object: print(i)
讓我們了解for循環(huán)如何作為迭代器。
# create an iterator object from that iterable iter_obj = iter(iterable) # infinite loop while True: try: # get the next item element = next(iter_obj) # do something with element except StopIteration: # if StopIteration is raised, break from loop break
現(xiàn)在我們知道了,for循環(huán)如何作為迭代器工作。讓我們了解如何在Python中實現(xiàn)自定義迭代器。
自定義迭代器
現(xiàn)在讓我們看一下如何在Python中實現(xiàn)自定義迭代器。為了理解這一點,我們將使用一個示例。在此示例中,我們將實現(xiàn)__iter __()和__next __()方法。
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter))
輸出:?1
2
3
現(xiàn)在我們知道了如何實現(xiàn)自定義迭代器,讓我們看一下Python中的無限迭代器。
無限迭代器
Iterator對象中的項目不一定要用盡。可以有無限個迭代器(永無休止)。這是一個演示無限迭代器的基本示例。
內(nèi)置?函數(shù)?iter()可以使用兩個參數(shù)來調(diào)用,其中第一個參數(shù)必須是可以調(diào)用的對象(函數(shù)),第二個必須是哨兵。迭代器將調(diào)用此函數(shù),直到返回的值等于前哨值為止。
讓我們以一個例子來理解這一點
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
輸出:?1
2
3
4
5
在上面的示例中,只要我們繼續(xù)添加print語句,執(zhí)行就會繼續(xù)。要停止無限迭代器,我們需要使用stopIteration語句。
StopIteration
為了永遠(yuǎn)停止迭代,我們使用StopIteration語句。讓我們通過一些示例來理解這一點。
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 5: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
輸出:?1
2
3
4
5
現(xiàn)在,如果if語句條件為false,則執(zhí)行將移至else塊,并且迭代將停止。現(xiàn)在,讓我們看一下Python中的其他迭代器示例。
Python迭代器示例
這是Python中迭代器的更多示例。
my_obj = ["Edureka", "python", "iterator"] iter_obj = iter(my_obj) print(next(iter_obj))
輸出:?Edureka
在此示例中,我們將元組用作可迭代對象。
my_obj = ("Edureka", "python", "iterator") iter_obj = iter(my_obj) print(next(iter_obj))
輸出:?Edureka
我們甚至可以將字符串用作python中的可迭代對象。
my_obj = "Edureka" iter_obj = iter(my_obj) print(next(iter_obj))
輸出:?E
這使我們到了本文的結(jié)尾,在這里我們學(xué)習(xí)了如何將Python迭代器與示例一起使用。我希望您對本教程中與您共享的所有內(nèi)容一清二楚。
Python 容器
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。