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

Python中迭代器的創(chuàng)建與使用詳解

 更新時間:2023年08月24日 09:38:48   作者:python收藏家  
Python中的迭代器是一個對象,用于迭代可迭代對象,如列表,元組,字典和集合,這篇文章主要為大家介紹了Python中迭代器的創(chuàng)建與使用,需要的可以參考下

Python中的迭代器是一個對象,用于迭代可迭代對象,如列表,元組,字典和集合。Python迭代器對象使用iter()方法初始化。它使用next()方法進行迭代。

  • iter():iter()方法用于迭代器的初始化。這將返回一個迭代器對象
  • next():next方法返回可迭代對象的下一個值。當我們使用for循環(huán)來遍歷任何可迭代對象時,它在內部使用iter()方法來獲取迭代器對象,迭代器對象進一步使用next()方法進行迭代。此方法引發(fā)StopIteration以發(fā)出迭代結束的信號。

Python iter()示例

string = "GFG"
ch_iterator = iter(string)
print(next(ch_iterator))
print(next(ch_iterator))
print(next(ch_iterator))

輸出

G
F
G

使用iter()和next()創(chuàng)建迭代器

下面是一個簡單的Python迭代器,它創(chuàng)建了一個從10到給定限制的迭代器類型。例如,如果限制是15,則它會打印10 11 12 13 14 15。如果限制是5,則它不打印任何內容。

# An iterable user defined type
class Test:
    # Constructor
    def __init__(self, limit):
        self.limit = limit
    # Creates iterator object
    # Called when iteration is initialized
    def __iter__(self):
        self.x = 10
        return self
    # To move to next element. In Python 3,
    # we should replace next with __next__
    def __next__(self):
        # Store current value ofx
        x = self.x
        # Stop iteration if limit is reached
        if x > self.limit:
            raise StopIteration
        # Else increment and return old value
        self.x = x + 1;
        return x
# Prints numbers from 10 to 15
for i in Test(15):
    print(i)
# Prints nothing
for i in Test(5):
    print(i)

輸出

10
11
12
13
14
15

使用iter方法迭代內置迭代器

在下面的迭代中,迭代狀態(tài)和迭代器變量是內部管理的(我們看不到它),使用迭代器對象遍歷內置的可迭代對象,如列表,元組,字典等。

# Iterating over a list
print("List Iteration")
l = ["geeks", "for", "geeks"]
for i in l:
    print(i)
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("geeks", "for", "geeks")
for i in t:
    print(i)
# Iterating over a String
print("\nString Iteration")   
s = "Geeks"
for i in s :
    print(i)
# Iterating over dictionary
print("\nDictionary Iteration")  
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
    print("%s  %d" %(i, d[i]))

輸出

List Iteration
geeks
for
geeks

Tuple Iteration
geeks
for
geeks

String Iteration
G
e
e
k
s

Dictionary Iteration
xyz  123
abc  345

可迭代 vs 迭代器(Iterable vs Iterator)

Python中可迭代對象和迭代器不同。它們之間的主要區(qū)別是,Python中的可迭代對象不能保存迭代的狀態(tài),而在迭代器中,當前迭代的狀態(tài)被保存。
注意:每個迭代器也是一個可迭代對象,但不是每個可迭代對象都是Python中的迭代器。

可迭代對象上迭代

tup = ('a', 'b', 'c', 'd', 'e')
for item in tup:
    print(item)

輸出

a
b
c
d
e

在迭代器上迭代

tup = ('a', 'b', 'c', 'd', 'e')
# creating an iterator from the tuple
tup_iter = iter(tup)
print("Inside loop:")
# iterating on each item of the iterator object
for index, item in enumerate(tup_iter):
    print(item)
    # break outside loop after iterating on 3 elements
    if index == 2:
        break
# we can print the remaining items to be iterated using next()
# thus, the state was saved
print("Outside loop:")
print(next(tup_iter))
print(next(tup_iter))

輸出

Inside loop:
a
b
c
Outside loop:
d
e

使用迭代器時出現(xiàn)StopIteration錯誤

Python中的Iterable可以迭代多次,但當所有項都已迭代時,迭代器會引發(fā)StopIteration Error。

在這里,我們試圖在for循環(huán)完成后從迭代器中獲取下一個元素。由于迭代器已經耗盡,它會引發(fā)StopIteration Exception。然而,使用一個可迭代對象,我們可以使用for循環(huán)多次迭代,或者可以使用索引獲取項。

iterable = (1, 2, 3, 4)
iterator_obj = iter(iterable)
print("Iterable loop 1:")
# iterating on iterable
for item in iterable:
    print(item, end=",")
print("\nIterable Loop 2:")
for item in iterable:
    print(item, end=",")
print("\nIterating on an iterator:")
# iterating on an iterator object multiple times
for item in iterator_obj:
    print(item, end=",")
print("\nIterator: Outside loop")
# this line will raise StopIteration Exception
# since all items are iterated in the previous for-loop
print(next(iterator_obj))

輸出

Iterable loop 1:
1,2,3,4,
Iterable Loop 2:
1,2,3,4,
Iterating on an iterator:
1,2,3,4,
Iterator: Outside loop

Traceback (most recent call last):
  File "scratch_1.py", line 21, in <module>
    print(next(iterator_obj))
StopIteration

到此這篇關于Python中迭代器的創(chuàng)建與使用詳解的文章就介紹到這了,更多相關Python迭代器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python?requests實現(xiàn)上傳excel數據流

    python?requests實現(xiàn)上傳excel數據流

    這篇文章主要介紹了python?requests實現(xiàn)上傳excel數據流,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python利用requests模塊下載圖片實例代碼

    Python利用requests模塊下載圖片實例代碼

    這篇文章主要給大家介紹了關于Python利用requests模塊下載圖片的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Python加速程序運行的方法

    Python加速程序運行的方法

    這篇文章主要介紹了Python加速程序運行的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 使用Python設置PDF中圖片的透明度的實現(xiàn)方法

    使用Python設置PDF中圖片的透明度的實現(xiàn)方法

    在PDF文檔的設計與內容創(chuàng)作過程中,圖像的透明度設置是一個重要的操作,尤其是在處理圖文密集型PDF文檔時,本文將介紹如何使用Python添加指定透明度的圖片到PDF文檔或調整PDF文檔中現(xiàn)有圖片的透明度,需要的朋友可以參考下
    2024-09-09
  • python3實現(xiàn)微型的web服務器

    python3實現(xiàn)微型的web服務器

    這篇文章主要為大家詳細介紹了python3實現(xiàn)一個微型的web服務器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 解決python對齊錯誤的方法

    解決python對齊錯誤的方法

    在本篇文章里小編給大家整理的是關于python對齊錯誤的解決方法,需要的朋友們可以參考學習下。
    2020-07-07
  • Python中怎樣查找文件當前位置

    Python中怎樣查找文件當前位置

    這篇文章主要介紹了Python中怎樣查找文件當前位置的方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python基于codecs模塊實現(xiàn)文件讀寫案例解析

    Python基于codecs模塊實現(xiàn)文件讀寫案例解析

    這篇文章主要介紹了Python基于codecs實現(xiàn)文件讀寫案例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 利用Numba與Cython結合提升python運行效率詳解

    利用Numba與Cython結合提升python運行效率詳解

    近些年來, Numba和Cython在數學科學界得到了廣泛的關注。它們都提供了一種加速CPU密集型任務的方法,但以不同的方式。本文描述了它們之間體系結構的差異
    2021-09-09
  • 詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置

    詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置

    這篇文章主要介紹了詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論

历史| 会东县| 香格里拉县| 乳山市| 梓潼县| 息烽县| 太仓市| 岑溪市| 三河市| 淮阳县| 来宾市| 宁夏| 驻马店市| 基隆市| 崇礼县| 南昌市| 泰和县| 抚远县| 齐齐哈尔市| 巫溪县| 海南省| 仁寿县| 海丰县| 河南省| 应城市| 临江市| 左权县| 泾源县| 金堂县| 仙居县| 巩留县| 砚山县| 芜湖市| 榆中县| 辰溪县| 调兵山市| 泗洪县| 娱乐| 招远市| 望谟县| 房山区|