關於可迭代物件的詳解

2022-07-20 08:09:15 字數 2850 閱讀 2638

1、可迭代物件是什麼?

意思分析:可以重複的迭代的實實在在的東西

專業角度: 內部含有'__iter__'方法的物件,就是可迭代物件

2、可迭代物件都有什麼?

list,dict(keys(),values(),items()),tuple,str,set,range

3、檢視內建函式內部有哪些方法?

print(dir(str))

4、判斷乙個物件是否是可迭代物件的方法?

print('__iter__' in dir(str))

# 輸出結果

true # 是可迭代物件

flase # 不是可迭代物件

我們已經知道可以對list、tuple、dict、set、str等型別的資料使用for...in...的迴圈語法從其中依次拿到資料進行使用,我們把這樣的過程稱為遍歷,也叫迭代。

把可以通過for...in...這類語句迭代讀取一條資料供我們使用的物件稱之為可迭代物件(iterable)。

在python中,迭代可通過for ... in來完成,例如列表的迭代:

list這種資料型別雖然有下標,但很多其他資料型別是沒有下標的,但是,只要是可迭代物件,無論有無下標,都可以迭代,比如dict就可以迭代:

因為dict的儲存不是按照list的方式順序排列,所以,迭代出的結果順序很可能不一樣。

預設情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。

由於字串也是可迭代物件,因此,也可以作用於for迴圈:

2. 如何判斷乙個物件是否可以迭代?

可以使用 isinstance() 判斷乙個物件是否是 iterable 物件:

3. 可迭代物件的本質

我們分析對可迭代物件進行迭代使用的過程,發現每迭代一次(即在for...in...中每迴圈一次)都會返回物件中的下一條資料,一直向後讀取資料直到迭代了所有資料後結束。那麼,在這個迭代過程中就應該有乙個「記錄員」去記錄每次訪問到了第幾條資料,以便每次迭代都可以返回下一條資料。我們把這個能幫助我們進行資料迭代的「記錄員」稱為迭代器(iterator)。可迭代物件的本質就是可以向我們提供乙個這樣的「記錄員」即迭代器幫助我們對其進行迭代遍歷使用。

可迭代物件通過__iter__方法向我們提供乙個迭代器,我們在迭代乙個可迭代物件的時候,實際上就是先獲取該物件提供的乙個迭代器,然後通過這個迭代器來依次獲取物件中的每乙個資料。那麼也就是說,乙個具備了__iter__方法的物件,就是乙個可迭代物件。

1 >>> class

mylist(object):

2 ...   def

__init__

(self):

3 ...     self.container =

4 ...   def

add(self, item):

56 ...   def

__iter__

(self):

7 ...     """

返回乙個迭代器

"""8 ...     #

我們暫時忽略如何構造乙個迭代器物件

9 ...     pass

10...

11 >>> mylist =mylist()

12 >>> from collections import

iterable

13 >>>isinstance(mylist, iterable)

14true

15 >>>16#

這回測試發現新增了__iter__方法的mylist物件已經是乙個可迭代物件了

list、tuple等都是可迭代物件,我們可以通過iter()函式獲取這些可迭代物件的迭代器。然後我們可以對獲取到的迭代器不斷使用next()函式來獲取下一條資料。iter()函式實際上就是呼叫了可迭代物件的__iter__方法。

1 >>> li = [11, 22, 33, 44, 55]

2 >>> li_iter =iter(li)

3 >>>next(li_iter)

4 11>>>next(li_iter)

5 22>>>next(li_iter)

6 33>>>next(li_iter)

7 44>>>next(li_iter)

8 55>>>next(li_iter)

9traceback (most recent call last):

10   file "

", line 1, in

11stopiteration

12 >>>

注意,當我們已經迭代完最後乙個資料之後,再次呼叫next()函式會丟擲stopiteration的異常,來告訴我們所有資料都已迭代完成,不用再執行next()函式了。

**:**:

可迭代物件 詳解

我們已經知道可以對list tuple dict set str等型別的資料使用for.in.的迴圈語法從其中依次拿到資料進行使用,我們把這樣的過程稱為遍歷,也叫迭代。把可以通過for.in.這類語句迭代讀取一條資料供我們使用的物件稱之為可迭代物件 iterable 在python中,迭代可通過fo...

可迭代物件 迭代物件

2.可迭代物件 迭代器物件 滿足可迭代物件前提 可以被迴圈的物件就是可迭代物件 例如 str list tuple set dict range generator 可以使用比較高效的方式判斷某個物件是否是可迭代物件 需要匯入collections模組中的iterable屬性,並且需要配合內建函式i...

可迭代物件

可迭代物件 1.生成器 2.元組 列表 集合 字典 字串 如果判斷乙個物件可迭代?from collections import iterable list1 1,2,3,4,5,6,7,8,9 c isinstance list1,iterable print c 迭代是訪問結合元素的一種方式。迭...