當(dāng)python中的生成器被完整遍歷一次后,就無法再次遍歷。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),廣陵企業(yè)網(wǎng)站建設(shè),廣陵品牌網(wǎng)站建設(shè),網(wǎng)站定制,廣陵網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,廣陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
我們希望享有生成器迭代占用內(nèi)存小的特性,又希望這個生成器能被遍歷多次。
方案之一是使用函數(shù) itertools.tee 來復(fù)制生成器
語法: generator1, generator2 = itertools.tee(generator, n=2)
generator是需要復(fù)制的生成器, n是復(fù)制出生成器個數(shù),默認(rèn)為2。
我們?yōu)榱松善髂芏啻伪闅v,可以這樣寫:
generator, copy_generator = itertools.tee(generator, 2)
然后遍歷copy_generator,保存的generator可以再次復(fù)制。
1、generator被復(fù)制后盡量不要使用
2、如果生成器中迭代的還是生成器,復(fù)制最外層生成器,生成器依然只能遍歷一次。
下一篇
python生成器多次遍歷(二)------創(chuàng)建生成器類
1.如果我們想要某件事情重復(fù)執(zhí)行具體次數(shù)的時候可以使用for循環(huán)。
2.for循環(huán)主要用來遍歷、循環(huán)、序列、集合、字典,文件、甚至是自定義類或函數(shù)。
使用for循環(huán)對列表進行遍歷元素、修改元素、刪除元素、統(tǒng)計列表中元素的個數(shù)。
for循環(huán)主要用來遍歷、循環(huán)、序列、集合、字典
結(jié)果演示:
apple
orange
banana
grape
for循環(huán)主要用來遍歷、循環(huán)、序列、集合、字典
把banana改為Apple
結(jié)果演示:['apple', 'orange', 'apple', 'grape']
結(jié)果演示:['apple', 'orange', 'grape']
統(tǒng)計apple的個數(shù)
結(jié)果演示:Fruits列表中apple的個數(shù)=2個
注:列表某一數(shù)據(jù)統(tǒng)計還可以使用Fruit.count(object)
結(jié)果演示:1 2... 10=362880
結(jié)果演示:
a
b
c
結(jié)果演示:
a
2
bc
結(jié)果演示:
朝辭白帝彩云間,千里江陵一日還。
兩岸猿聲啼不住,輕舟已過萬重山。
9.遍歷字典
結(jié)果演示:
鍵---name
值---Kaina
鍵---age
值---22
pre{overflow-x: auto}
range函數(shù)的使用
作為循環(huán)遍歷的對象
第一種創(chuàng)建方式 r=range(10) print(r)#range(0,10) print(list(r))
默認(rèn)從零開始,默認(rèn)步長為1
range(0,?10) [0,?1,?2,?3,?4,?5,?6,?7,?8,?9]第二種創(chuàng)建方式
指定了初始值1,到10結(jié)束,不包含10,默認(rèn)步長為1
'''第二種創(chuàng)建方式,給了兩個參數(shù)(小括號中給了兩個數(shù))''' r=range(1,10) print(list(r)) [1,?2,?3,?4,?5,?6,?7,?8,?9] 第三種創(chuàng)建方式
最后一位數(shù)為步長
r=range(1,10,2) print(list(r)) [1,?3,?5,?7,?9] 判斷指定的數(shù)有沒有在當(dāng)前序列中 r=range(1,10,2) print(10?in?r) False
循環(huán)結(jié)構(gòu)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注的更多內(nèi)容!