1. 程式人生 > 其它 >Python生成器的推導式

Python生成器的推導式

 

普通函式採用return返回值

def func():
    print("111")
    return 222     #return返回一個值

ret
=func() print(ret)
結果:
111
222

將函式中的return換成yield就是生成器

def func():
    print("111")
    yield 222 # 整個函式是一個生成器

ret =func()
print(ret)

結果:

<generator object func at 0x0000024277AB44A0>

通過執行_next_()來執行以下生成器

def func():
    
print("111") yield 222 # 整個函式是一個生成器 mygenerator=func() print(mygenerator.__next__())
結果:
111
222

yield是分段來執行一個函式,而return是直接停止執行函式

def func():
    print("111")
    yield 222
    print("333")
    yield 444

mygenerator=func()
ret=mygenerator.__next__()
print(ret)
ret=mygenerator.__next__()
print(ret)
ret
=mygenerator.__next__() #最後一個yield執行完畢,再次__next__()程式會報錯 print(ret)

生成器可以使用for迴圈來迴圈獲取內部的元素:

def func():
    print(111)
    yield 222
    print(333)
    yield 444
    print(555)
    yield 666

gen=func()
for i in gen:
    print(i)

結果:

111
222
333
444
555
666

 

生成器表示式(生成器推導式)

>>> gen =(i for
i in range(10)) >>> type(gen) <class 'generator'> >>> gen.__next__() 0 >>> gen.__next__() 1 >>> gen.__next__() 2 >>> gen.__next__() 3

 

生成器的特點:

惰性機制,生成器並不立即產生全部元素,僅在用到元素的時候才生成(只能向前),可以極大節省記憶體

 

https://www.cnblogs.com/mlhz/p/9469124.html