python迭代器和生成器

迭代是Python最強(qiáng)大的功能之一,是訪問(wèn)集合元素的一種方式。。
迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。
迭代器對(duì)象從集合的第一個(gè)元素開(kāi)始訪問(wèn),直到所有的元素被訪問(wèn)完結(jié)束。迭代器只能往前不會(huì)后退。
迭代器有兩個(gè)基本的方法:iter() 和 next()。
字符串,列表或元組對(duì)象都可用于創(chuàng)建迭代器:

list=[1,2,3,4]
it = iter(list) # 創(chuàng)建迭代器對(duì)象
for x in it:
print (x, end=" ")

import sys # 引入 sys 模塊

list=[1,2,3,4]
it = iter(list) # 創(chuàng)建迭代器對(duì)象

while True:
try:
print (next(it))
except StopIteration:
sys.exit()

生成器:
在 Python 中,使用了 yield 的函數(shù)被稱為生成器(generator)。
跟普通函數(shù)不同的是,生成器是一個(gè)返回迭代器的函數(shù),只能用于迭代操作,更簡(jiǎn)單點(diǎn)理解生成器就是一個(gè)迭代器。
在調(diào)用生成器運(yùn)行的過(guò)程中,每次遇到 yield 時(shí)函數(shù)會(huì)暫停并保存當(dāng)前所有的運(yùn)行信息,返回yield的值。并在下一次執(zhí)行 next()方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行。

!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函數(shù) - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一個(gè)迭代器,由生成器返回生成

while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:深入講解Python中的迭代器和生成器 在Python中,很多對(duì)象都是可以通過(guò)for語(yǔ)句來(lái)直接遍歷的,例如...
    bobobe閱讀 1,101評(píng)論 2 4
  • 1.迭代器 在python中,有很多數(shù)據(jù)類型是屬于可迭代對(duì)象。比如,元祖,列表,字典,字符串,文件等類型。pyth...
    第八共同體閱讀 870評(píng)論 0 0
  • 1、List Conprehensions 列表生成式是python中內(nèi)置的用來(lái)創(chuàng)建list的表達(dá)式、如果我們要生...
    嘿嘿_小于同學(xué)閱讀 702評(píng)論 0 8
  • 生成器: 一邊循環(huán)一邊運(yùn)算的機(jī)制,稱為生成器,generator 創(chuàng)建生成器方法1 把列表生成式的[]改成() l...
    界面大叔閱讀 290評(píng)論 0 0
  • 我們永無(wú)島班級(jí)的“農(nóng)歷天空下”之節(jié)氣的里程即將要結(jié)束了。我們永無(wú)島的節(jié)氣旅程是從冬至開(kāi)始的,所以,下一個(gè)星...
    講喊錄閱讀 263評(píng)論 1 1

友情鏈接更多精彩內(nèi)容