真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python 生成器與迭代器

生成器

生成器: 節(jié)省空間

創(chuàng)新互聯(lián)建站主營馬邊彝族網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),馬邊彝族h5微信小程序搭建,馬邊彝族網(wǎng)站營銷推廣歡迎馬邊彝族等地區(qū)企業(yè)咨詢

# generator 生成器
f = [i for i in range(1,1001)] # 列表
f = (i for i in range(1,1001)) # 生成器

在創(chuàng)建列表是,會在內(nèi)存中全部創(chuàng)建出來,而生成器不會全部創(chuàng)建出來,而是使用一個(gè)就創(chuàng)建一個(gè),結(jié)束后會被當(dāng)垃圾回收掉
# 垃圾回收機(jī)制 只要符合沒有被對象引用,python就會自動清理內(nèi)存
# 使用方法
f.__next__() # 魔法方法,盡量不用
next(f) # 與f.__next__相同

生成器的創(chuàng)建

1. (i for i in range(1,10))
2. yeld 關(guān)鍵字

def f(): # 生成器
    print("f1")
    yield 1 # 掛起(暫停)
    print("f2")
    yield 2 

g = f() # 使用時(shí)必須賦值給一個(gè)變量
next(g) # f1   
print(next(g)) # f2  2

迭代器

可迭代對象:

for i in 可迭代對象:
    print(i)
# 可以for循環(huán)的都是可迭代對象

# 內(nèi)置有iter方法的就是可迭代對象

生成器其實(shí)就是迭代器

l = [i for i in range(1,10)]
li = l.__iter__() # 返回一個(gè)可迭代對象
li = iter(l) # 一般用這個(gè)
# 這里li就是迭代器  l就是可迭代對象

# 迭代器滿足2個(gè)方法
1. 有iter方法
2. 有next方法

遍歷原理:

li = ["a","b","c"]
for i in li:
    print(i) # 本質(zhì)就是使用了迭代器原理 next來做到遍歷
   
# 遍歷的本質(zhì)的將 可迭代類型,轉(zhuǎn)為了迭代器
# 然后不斷的 next() 將其元素,從頭到尾全部輸出

# 1. d = li.__iter__()
# 2. 不斷 i = next(d)
# 3. print(i)


分享文章:python 生成器與迭代器
轉(zhuǎn)載來源:http://weahome.cn/article/dsogees.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部