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

歡迎訪問 生活随笔!

生活随笔

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

python

python迭代器使用_Python迭代器的用法

發布時間:2023/12/2 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python迭代器使用_Python迭代器的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在前面使用過語句“for x in列表對象”,這就表示列表對象是可迭代的(Iterable)。那么如何判斷某個對象是否可迭代呢?答案是可以使用collections.Iterable類來判斷。

如下面的代碼所示,列表是可迭代的,整數是不可迭代的,字符串是可迭代的。

>>> from collections import Iterable # 引入Iterable類

>>> isinstance([], Iterable) # 列表是可迭代的

True

>>> isinstance(12, Iterable) # 整數是不可迭代的

False

>>> isinstance("12", Iterable) # 字符串是可迭代的

True

另外一個概念是迭代器(Iterator)。它可以作為內置函數 next() 的參數,每次按照一定順序得到其中一個元素。但比較有趣的是,列表不是迭代器。同樣可以用 collections.Iterator 類來判斷某個對象是否是迭代器。

如下面的代碼所示,列表和字符串都不是迭代器:

>>> from collections import Iterator # 引入Iterator類

>>> isinstance([], Iterator) # 列表不是迭代器

False

>>> isinstance("abc", Iterator) # 字符串也不是迭代器

False

那么列表是否可以作為 next() 的參數呢?答案是不可以。例如下面的代碼:

>>> a = [1, 2, 3] # 創建列表對象a

>>> next(a) # 使用內置的next()接口函數,發生錯誤

Traceback (most recent call last):

File "", line 1, in

TypeError: list object is not an iterator

這比較容易理解,因為我們沒有指定當前位置,但可以使用另外一個內置函數 iter() 來將其轉換成 Iterator。下面的代碼演示了這種用法:

>>> from collections import Iterable # 引入Iterable和Iterator類

>>> from collections import Iterator

>>> a = [1, 2, 3] # 創建列表對象a

>>> isinstance(a, Iterable) # 列表對象是可迭代的

True

>>> isinstance(a, Iterator) # 列表對象不是迭代器

False

>>> it_a = iter(a) # 從列表對象得到迭代器it_a

>>> isinstance(it_a, Iterable) # it_a是可迭代的,也是迭代器

True

>>> isinstance(it_a, Iterator)

True

>>> type(it_a) # it_a是列表型迭代器

>>> next(it_a) # 得到一個數據

1

>>> it_a.next() # 使用另外一種方式得到一個數據

2

>>> next(it_a)

3

>>> next(it_a) # 沒有數據了,拋出異常

Traceback (most recent call last):

File "", line 1, in

StopIteration

迭代器的一個特點是它只能使用一次,從頭部走到尾部。如果希望再次走一遍,只能創建一個新的迭代器。

總結

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

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