可迭代物件

2022-10-11 15:18:09 字數 3039 閱讀 8794

目錄一:可迭代物件

1.什麼是迭代器?

迭代取值的工具

2.什麼是迭代?

迭代既更新換代 每次的更新都必須依賴於上一次的結果

3.可迭代物件內建有__iter__方式的都稱之為可迭代物件

內建的意思是可以通過點的方式直接檢視到的

'''針對雙下劃線開頭 雙下劃線結尾的方式 最為專業標準的讀法為

雙下方法名

物件導向的時候為了與隱藏變數區分開

'''n = 1

while true:

n+=1

print(n)

l = [11,22,33,44,55,66]

n = 0

while n < len(l):

print(l[n])

n += 1

i = 12 # 沒有

f = 11.11 # 沒有

s = 'jason' # 有

l = [111,22,33,4] # 有

d = # 有

t = (11,22,33) # 有

se = # 有

b = true # 沒有

file = open(r'a.txt','w',encoding='utf8')

含有__iter__的有

字串 列表 字典 元組 集合 檔案物件

上述通常為可迭代物件

等價於呼叫了乙個內建方法 d.get()

print(d)

print(d.__iter__())

print(iter(d))

print(d.__len__())

print(len(d))

可迭代物件呼叫__iter__方法會變成迭代器物件(老母豬)

__iter__方法在呼叫的時候還有乙個簡便的寫法iter()

一般情況下所有的雙下方法都會有乙個與之對應的簡化版本 方法名()

二:迭代器物件

迭代器物件

即含有__iter__方法 又含有__next__方法

如何生成迭代器物件

讓可迭代物件執行__iter__方法

檔案物件本身即是可迭代物件又是迭代器物件

迭代器物件無論執行多少次__iter__方法 還是迭代器物件(本身)

迭代器給我們提供了不依賴於索引取值的方式

i = 12 # 沒有

f = 11.11 # 沒有

s = 'jason' # 有

l = [111,222,333,444] # 有

d = # 有

t = (11,22,33) # 有

se = # 有

b = true # 沒有

file = open(r'a.txt','w',encoding='utf8')

res = s.__iter__() # 轉成迭代器物件

print(res.__next__()) # 迭代器物件執行————next__方法其實就是在迭代取值

(for迴圈)

print(res.__next__())

print(res.__next__())

print(res.__next__())

print(res.__next__())

res = d.__iter__() # 轉成迭代器物件

print(res.__next__()) # 迭代器物件執行__next__方法其實就是在迭代取值(for迴圈)

print(res.__next__())

print(res.__next__()) # 取完元素之後再取會"報錯"

易錯print(d.__iter__().__next__()) # username

print(d.__iter__().__next__()) # username

print(d.__iter__().__next__()) # username

print(d.__iter__().__next__()) # username

print(d.__iter__().__next__()) # username

print(d.__iter__().__next__()) # usernam

可迭代物件優缺點?

優點1.提供了一種新的,統一的取值方式(可以不依賴於索引以及key的)

2.惰性計算,不消耗記憶體

缺點1.取值不夠靈活

2.一次性的只能往後取,無法預知資料的個數

三:for迴圈的本質

l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55]

迴圈列印出列表中每個元素 但是不能使用for迴圈 __next__() next()

1.先將列表轉為迭代器物件

res = l1.__iter__()

2.迴圈執行__next__取值

while true:

print(res.__next__())

for i in l1:

print(i)

'''for迴圈內部原理

1.將關鍵字in後面的資料先呼叫__iter__方法轉為迭代器物件

2.迴圈執行__next__方法

3.取完之後__next__會報錯 但是for迴圈會自動捕獲該錯誤並處理

res = 資料.__iter__()

while true:

檢測**是否會報錯

res.__next__()

如果報錯了則自動處理掉並結束while迴圈

可迭代物件 迭代物件

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 迭代是訪問結合元素的一種方式。迭...

物件 可迭代物件 迭代器

本節是對可迭代物件和迭代器的簡單總結,希望對大家有幫助。對於乙個初級選手而言,了解即可,不過這對大家以後高階可能會有一定的幫助。悅分享,越快樂。我們一起成長。哈啊哈哈。物件,乙個實實在在存在的值 可迭代 更新迭代,迴圈的乙個過程,每乙個內容都是新的 可迭代物件 可以進行迴圈更新的乙個實實在在的值。專...