1. 程式人生 > >python學習筆記(16)循環對象

python學習筆記(16)循環對象

python學習 再次 轉化 謝謝 next() 方法 pan rec last

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

原鏈:http://www.cnblogs.com/vamei/archive/2012/07/09/2582499.html

筆記:有比較拗口的名詞;表推導,生成器gen(),叠代器(作業沒有很大篇幅介紹)

#第16講 循環對象

for line in open(D:/pythonfiles/test.txt):
    print (line)

#輸出結果:按行打印
#1234
#abcd
#efg

#作者意思,應該是手動循環,然後循環到後面,出現stopinteration,python就認為循環執行完了
#for loop 就是自動調用了next()方法,直到stopinteratrion出現 #生成器 def gen(): a = 100 yield a a = a*8 yield a yield 1000 for i in gen(): print (i) #輸出:100 #800 #1000 #gen() 跟函數定義很像,return 的時候改為 yield #可以有多個yield #gen()遇到yield 後,暫停運行生成器,返回yield後的值,再次調用的時候,會從暫停的時候繼續運行,到下一個yield #生成器自身又構成一個循環器,每次loop 使用一個yield返回的值
def gen(): for i in range(4): yield i #生成器表達式 G = (x for x in range(4)) #G.next() #挨個打印元素 #python2可以用.next()實現 #python3 報錯,屬性錯誤,因為沒有這個方法 next(G) #就可以順序打出,直到報出stopinteration,loop結束 #輸出 ‘‘‘ >>> next(G) 0 >>> next(G) 1 >>> next(G) 2 >>> next(G) 3 >>> next(G) Traceback (most recent call last): File "<pyshell#830>", line 1, in <module> next(G) StopIteration
‘‘‘ #表推導 l = [] #l 一個空的list for x in range(10):#循環到9,range沒有上限 l.append(x**2)#l 尾部增加x平方 l #輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] l = [x**3 for x in range(10)] #輸出:[0, 1, 8, 27, 64, 125, 216, 343, 512, 729] #作業: xl = [1,3,5] yl = [9,12,13] L = [ x**2 for (x,y) in zip(xl,yl) if y > 10] #先轉化 xl = [1,3,5] yl = [9,12,13] l = [] for (x,y) in zip(xl,yl): if y >10: print (x**2) l #輸出9 25 #但是不在list裏面 xl = [1,3,5] yl = [9,12,13] l = [] for (x,y) in zip(xl,yl): if y >10: l.append(x**2) l #輸出變了[9, 25] zip(xl,yl) #輸出是(1, 9) (3, 12) (5, 13) #if 條件語句 y>10 的 對x執行平方 #y大於10 的,後兩個,3 的平方,和5的平方 #所以輸出應該是[9,25]

python學習筆記(16)循環對象