python三大神器之迭代器

2022-05-03 20:18:17 字數 1541 閱讀 5324

可迭代協議:

內部含有__iter__方法的值/變數都是可迭代的.可迭代型別和python語言之間的協議.

可迭代物件:

iterable,內部包含__iter__()函式.

迭代器:

iterator,內部同時包含__iter__()和__next__().

迭代器的特點:

1節省記憶體,  2.惰性機制,  3一次性取值,只能按順序取

可迭代變數.__iter__(),返回乙個迭代器.

1 l = [1,2,3,4]

2 res = l.__iter__()3

print(res.__next__

())4

print(res.__next__

())5

print(res.__next__

())6

print(res.__next__

())7

print(res.__next__

())8

9 res.__setstate__(2) #

控制迭代器從哪兒開始迭代

10print(res.__length_hint__()) #

迭代器中有多少個元素

1112 res1 = l.__iter__

()13 res2 = l.__iter__

()1415#

res1和res2都是迭代器16#

是兩個完全不同的迭代器

17for i in

res1:

18print

(i)19

print('

------')

20for i in

res1:

21print

(i)22

print('

^^^^^^')

23for i in

res2:

24print

(i)25

print('

!!!!!!!')

26for i in l.__iter__

():27

print

(i)28

print('

******')

29for i in l.__iter__

():30

print

(i)31

for i in

l:32

print

(i)33

print('

########')

34for i in

l:35

print(i)

for 迴圈取值

for迴圈內部的機制就是迭代器取值機制

在for迴圈執行的過程中:先把可迭代的變成乙個迭代器,然後再從中乙個個的取值

for迴圈與迭代器的關係:

無論是可迭代的還是迭代器都可以被for迴圈,

如果直接迴圈迭代器,迴圈一次就能把值取完,不能再進行取值,

如果迴圈的是非迭代器,那麼每一次迴圈都會通過iter生成乙個新的迭代器,可以重複取值.

Python三大神器之 迭代器

迭代器定義 迭代器是乙個可以記住遍歷位置的物件 迭代器物件從第乙個元素開始訪問,直到所有的元素被訪問截止 迭代器只會向前,不能向後from collections import iterable class mylist object 這是自定義的列表類 def init self self.lis...

Python三大神器之 裝飾器

def info print 這是學生資訊 info a info print id a print id info a 展示 4009632 4009632 這是學生資訊def info return 小王 defsuccess print 返回值函式 def printinfo func par...

Python 三大神器

python 中有很多優秀的包,本文主要講一下 pip,virtualenv,fabric 文件 3456 78910 1112 1314 1516 17 安裝,可指定版本號 sudo pip install django 1.6.8 公升級 sudo pip install bpython upg...