迭代器定義:
迭代器是乙個可以記住遍歷位置的物件
迭代器物件從第乙個元素開始訪問,直到所有的元素被訪問截止
迭代器只會向前,不能向後
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...