日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python之迭代器

發布時間:2024/6/30 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之迭代器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

迭代器(?iterator)

——是訪問集合元素的一種方式,迭代器從集合的第一個元素開始訪問,直到所有元素被訪問結束。并且,迭代器只能向前訪問。

  • 優點:不要求事先準備好整個迭代過程中的所有元素,迭代器僅僅在迭代到某個元素時才計算該元素。在這之前和之后,元素可以不存在或者被銷毀。這一大優點使迭代器特別適合用于遍歷一些巨大的或是無限的集合。
  • 迭代器更大的功勞是:提供一個統一的訪問集合的接口,只要是定義了__iter__()方法對象,就可以使用迭代器訪問。
  • 迭代器有兩個基本的方法:
  • next()方法???: 返回迭代器的下一個元素
  • __iter__方法?: 返回迭代器對象本身
  • 使用迭代器

    • 使用內建函數iter(iterable)可以獲取迭代器對象

    1

    2

    3

    4

    >>> list?= range(5)

    >>> it = iter(list)

    >>> it

    <listiterator object at?0x01A63110>

    • 使用next()方法可以訪問下一個元素

    1

    2

    3

    4

    5

    6

    >>> it.next()

    0

    >>> it.next()

    1

    >>> it.next()

    2

    • python處理迭代器越界是拋出StopIteration異常

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    >>> it.next()

    3

    >>> it.next

    <method-wrapper?'next'?of listiterator object at?0x01A63110>

    >>> it.next()

    4

    >>> it.next()

    ?

    Traceback (most recent call last):

    ??File?"<pyshell#27>", line?1, in <module>

    ????it.next()

    StopIteration

    • 使用迭代器進行遍歷

    >>>list = range(5)

    >>>it = iter(list)try:

    ? ? ? ? ? ? ?while?True:

    ? ? ? ? ? ? ? ? ? ?val = it.next()

    ? ? ? ? ? ? ?print?valexcept?StopIteration:

    ? ? ? ? pass

    結果:

    1

    2

    3

    4

    5

    6

    >>>

    0

    1

    2

    3

    4

    ?

    • Python專門為for關鍵字做了迭代器的語法糖。

    在for循環中,Python將自動調用工廠函數iter()獲得迭代器,自動調用next()獲取元素,還完成了檢查StopIteration異常的工作

    如下:

    >>> a = (1, 2, 3, 4)

    >>> for?key in?a:

    ??????????print?key

    1

    2

    3

    4

    * 解析:首先python對關鍵字in后的對象調用iter函數迭代器,然后調用迭代器的next方法獲得元素,直到拋出StopIteration異常。

    • ?默認情況下,dict迭代的是key(for key in d);

    ? ?如果要迭代value,可以用for value in d.itervalues();

    ? ?如果要同時迭代key和value,可以用for k, v in d.iteritems()。

    • ?Python內置的enumerate函數可以把一個list變成索引-元素對,這樣就可以在for循環中同時迭代索引和元素本身:

    >>> for i, value in enumerate(['A', 'B', 'C']):

    ... ????print i, value

    ...

    0 ?A

    1 ?B

    2 ?C

    • 內建的isinstance函數可以判斷一個變量是不是字符串:

    >>> x = 'abc'

    >>> y = 123

    >>> isinstance(x, str)

    True

    >>> isinstance(y, str)

    False

    轉載于:https://www.cnblogs.com/sunshine-blog/p/8318788.html

    總結

    以上是生活随笔為你收集整理的Python之迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。