1换怖、什么時生成器
生成器就是迭代器的一種(特別節(jié)約內(nèi)存),一種具有生成元素功能的迭代器蟀瞧,作為容器不是保存的數(shù)據(jù)沉颂,而是產(chǎn)生數(shù)據(jù)的算法条摸。
2、創(chuàng)建生成器
調(diào)用帶有yield的函數(shù)兆览,就可以得到一個生成器屈溉。
3塞关、生成器怎么產(chǎn)生數(shù)據(jù)
在生成器關(guān)聯(lián)的函數(shù)體執(zhí)行幾次yield抬探,每次yield后面的數(shù)據(jù)就是對應(yīng)的生成器元素
def func2():
yield 10
print('第二個')
yield 100
print('第三個')
yield 1000
gen = func2()
print(next(gen))
print(next(gen))
print(next(gen))
4、生成器產(chǎn)生數(shù)據(jù)的規(guī)律
生成器獲取元素時在函數(shù)的第一條語句開始執(zhí)行第一個yield及以前的代碼執(zhí)行帆赢,并將yield后面的元素作為獲取到的迭代器的元素小压。
5、生成式
只是生成器的簡潔寫法
1)語法一:
#生成式
gen2 = (num for num in range(1,11))
for x in gen2:
print(x)
2)語法二:
gen3 = (num for num in 序列 if 條件語句)
list1 = [1,2,3,4,5,6]
# gen3 = (num for num in 序列 if 條件語句)
gen3 = (num for num in list1 if num&1==1)
for i in gen3:
print(i)
3)語法三:
gen4 = (i*y for i in range(1,10) for y in range(1,10) if i == y)
for i in gen4:
print(i)