程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> python基礎之生成器和迭代器

python基礎之生成器和迭代器

編輯:Python

生成器

帶有 yield 的函數在 Python 中被稱之為 generator(生成器)

 

def xragns():     #定義函數生成器
    print('小伙')
    yield ('好')    #加上yield就會生成一個生成器

    print('python')
    yield('hao')

    print('編程')
    yield('hao')

x = xragns()       #執行函數生代器僅僅是獲得內部不會執行
ret = x.__next__()  #生成器的next方法才會向下執行 執行函數尋找下一個yield
print(ret)
ret = x.__next__()  #第二次執行會回到上次跳出的位置想下執行
print(ret)
ret = x.__next__()
print(ret)

迭代器

迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,知道所有的元素被訪問完結束。迭代器只能往前不能後退

ef xrange(n):    #定義一個函數
    start = 0
    while True:   #while循環
        if start > n:  #判斷如果值小於n
            return
        yield start    #生成器退出
        start += 1    #每循環到這都加一

for i in xrange(10):    #迭代器
    print(i)

obj = xrange(5)     #執行函數,這個時候內部不會執行生成器
n1 = obj.__next__()  #生成器從上向下執行知道遇到的第一個yield
n2 = obj.__next__()  #生成器會回到上次跳出的位置繼續回去循環
n3 = obj.__next__()  # 依次想下執行
n4 = obj.__next__()
n5 = obj.__next__()
n6 = obj.__next__()
n7 = obj.__next__()
print(n1,n2,n3,n4,n5,n6)  #輸出所有的結果
#
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved