Python三大神器之 迭代器

2021-09-25 20:14:58 字數 2974 閱讀 5695

迭代器定義:

迭代器是乙個可以記住遍歷位置的物件

迭代器物件從第乙個元素開始訪問,直到所有的元素被訪問截止

迭代器只會向前,不能向後

from collections import iterable

class

mylist

(object):

'''這是自定義的列表類'''

def__init__

(self)

: self.listnew =

#遍歷位置的記錄

self.current_index=

0def

add_num

(self,num)

:#在列表的末尾追加一位

def__iter__

(self)

:'''可以是生成的物件變成可迭代物件'''

return self

def__next__

(self)

:'''

1、記錄迭代的位置

2、記錄返回訪問的資料

:return:

'''if self.current_index <

len(self.listnew)

: data = self.listnew[self.current_index]

self.current_index +=

1return data

else

:print

('資料已經沒有了'

)raise stopiteration

list1 = mylist(

)list1.add_num(10)

list1.add_num(

100)

print

(list1.listnew)

from collections import iterable

print

(isinstance

(list1,iterable)

)try

:print

(next

(list1)

)print

(next

(list1)

)print

(next

(list1)

)except exception as e:

pass

for i in list1:

print

(i)

迭代器在類的外部:

from collections import iterable

class

mylist

(object):

'''這是自定義的列表類'''

def__init__

(self)

: self.listnew =

defadd_num

(self,num)

:def

__iter__

(self)

:'''可以是生成的物件變成可迭代物件'''

myiterator = myiterator(self)

return myiterator

class

myiterator

(object):

'''這是自定義的迭代器類,將來用來返回的是乙個迭代器物件'''

def__init__

(self,list_obj)

: self.mylist = list_obj

self.current_index =

0def

__iter__

(self)

:return self

def__next__

(self)

:'''

1、記錄迭代的位置

2、記錄返回訪問的資料

:return:

'''if self.current_index <

len(self.mylist.listnew)

: data = self.mylist.listnew[self.current_index]

self.current_index +=

1return data

else

:print

('資料已經沒有了'

)raise stopiteration

mylist = mylist(

)mylist.add_num(10)

mylist.add_num(

100)

print

(mylist.listnew)

iter1 =

iter

(mylist)

# print(next(iter1))

# print(next(iter1))

# print(next(iter1))

for i in iter1:

print

(i)# try:

# while true:

# print(next(iter(mylist)))

# except exception as e:

# pass

# for i in mylist:

# print(i)

# next() ------> __next__

# iter() ------> __iter__

# for

## list1 = mylist()

# print(isinstance(list1,iterable))

## iter()

## list1.add_num(10)

# for i in list1:

# print(i)

python三大神器之迭代器

可迭代協議 內部含有 iter 方法的值 變數都是可迭代的.可迭代型別和python語言之間的協議.可迭代物件 iterable,內部包含 iter 函式.迭代器 iterator,內部同時包含 iter 和 next 迭代器的特點 1節省記憶體,2.惰性機制,3一次性取值,只能按順序取 可迭代變數...

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...