python中迭代器的应用场景
1.迭代器的應用場景
?
1).? 如果數列的數據規模巨大
2).? 數列有規律,但是依靠列表推導式描述不出來
?
2.數學中有個著名的斐波拉契數列(Fibonacci),數列中第?個數0,第?個數1,其后的每?個數都可由前兩個數相加得到:
0,??? 1,??? 1,???2,??? 3,??? 5,???8,??? 13,??? 21,???34,??? ...
現在我們想要通過for...in...循環來遍歷迭代斐波那契數列中的前n個數。那么這個斐波那契數列我們就可以?迭代器來實現,每次迭代都通過數學計算來?成下?個數。
classFibIterator(object):
??? """fib數列迭代器"""
??? def __init__(self, n):
??????? """"""
??????? self.num1 = 0
??????? self.num2 = 1
??????? self.n = n? # 用來保存迭代的總次數
??????? self.i = 0? # 用來記錄迭代次數
?
??? def __next__(self):
??????? # 判斷是否迭代結束,如果沒有到達迭代次數,則返回數據
??????? if self.i < self.n:
??????????? # 保存要返回的值
??????????? item = self.num1
?
??????????? # 計算num1, num2的值,方便下次迭代返回
??????????? self.num1, self.num2 = self.num2,self.num1 + self.num2
?
??????????? # 記錄迭代次數
??????????? self.i += 1
??????????? return item
??????? else:
??????????? # 到達了迭代次數,拋出異常
??????????? raise StopIteration
?
??? def __iter__(self):
??????? return self
?
?fib =FibIterator(20)
li = list(fib)
print(li)
總結
以上是生活随笔為你收集整理的python中迭代器的应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的多线程-threadin
- 下一篇: python中的面向对象