Python3基礎筆記 生成器

2022-09-11 16:33:36 字數 2019 閱讀 6744

a = [x for x in range(10)]

b= [y*2 for y in range(10)]

deff(n)

return n*n*n

c = [f(z) for z in range(10)]

列表生成器會將所有的內容載入到記憶體中,在生成大量的資料時,會占用記憶體

生成器只會生成乙個  generator object   ,占用很少記憶體,只會在呼叫時才產生值。且只能按順序取值

b = (x for x in range(10))

print

(b)print(next(b)) #

等價於 b.__next__() 等價於python2中的b.next()

print(b.__next__

())for i in

b:

print

(i)'''

output

at 0x000002900b1bb308>01

2345

6789

'''

①   (x for x in range(10))

②  yield方式

第②種**

def

foo():

print("ok"

)

yield 1

print("

fine")

yield

g =foo()

print

(g)#

next(g)

#aa = next(g)

#print(aa)

for i in

g:

print(i)

遇到函式中有  yield   則該函式為生成器

乙個yield是乙個生成器的生成物的結點,它會返回yield 後面的內容,然後結束,直到下乙個next的呼叫 

def

bar():

c = yield

0

print

(c)

print("

ok1"

) count = yield 1

print

(count)

print("

ok2"

)

yield 2g =bar()

print

(g)#

print(next(g))

print(g.send('

ccc')) #

typeerror: can't send non-none value to a just-started generator

print(g.send("

qqqq

"))

send()方法與next()方法類似,但可以向生成器中傳值,用於一些互動場景,但在第乙個send()前如果沒有next(),只能傳乙個send(none),否則會出現  typeerror: can't send non-none value to a just-started generator

參考部落格:python之路,day4 - python基礎4 (new版)

py西遊攻關之迭代器&生成器

什麼是迭代器?

滿足兩個條件:①有iter方法  ②有next方法

區別迭代器與可迭代物件

from collections import

iterator,iterable

l = [1, 2, 3]

print

(isinstance(l,list))

print(isinstance(l,iterator)) #

false 不是迭代器

print(isinstance(l,iterable)) #

true 是可迭代物件

for i in

l:

print(i)

python3生成器 Python3 生成器

python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...

python3之生成器

斐波那契 fibonacci 數列列是乙個非常簡單的遞迴數列,除第乙個和第二個數外,任意乙個數都可由前兩個數相加 得到。用電腦程式輸出斐波那契數列的前 n 個數是乙個非常簡單的問題,許多初學者都可以輕易寫出如下函式 def fab max n,a,b 0,0,1 while n max print ...

python3學習筆記 生成器generator

跟著廖大學python3一段日子了,這裡簡單了解下生成器generator,主要是yield的返回值和send的傳參,記錄下。generator 函式 yield 簡單說,就是乙個函式,裡面用到了關鍵字yield,就成為了乙個生成器 生成器和函式的不同主要在於 每次執行,會暫時中斷在yield關鍵字...