#!/usr/bin/python3 #coding=utf-8 #è¿ä»£å¨ ''' 对äºlistãstringãtupleãdictçè¿äºå®¹å¨å¯¹è±¡,使ç¨for循ç¯é忝徿¹ä¾¿çãå¨åå°forè¯å¥å¯¹å®¹å¨å¯¹è±¡è°ç¨iter()彿°ã iter()æ¯pythonå ç½®å½æ°ã iter()彿°ä¼è¿åä¸ä¸ªå®ä¹äºnext()æ¹æ³çè¿ä»£å¨å¯¹è±¡ï¼å®å¨å®¹å¨ä¸é个访é®å®¹å¨å çå ç´ ã next()乿¯pythonå ç½®å½æ°ã卿²¡æåç»å ç´ æ¶ï¼next()伿åºä¸ä¸ªStopIterationå¼å¸¸ï¼éç¥forè¯å¥å¾ªç¯ç»æã è¿ä»£å¨æ¯ç¨æ¥å¸®å©æä»¬è®°å½æ¯æ¬¡è¿ä»£è®¿é®å°çä½ç½®ï¼å½æä»¬å¯¹è¿ä»£å¨ä½¿ç¨next()彿°çæ¶åï¼è¿ä»£å¨ä¼åæä»¬è¿åå®æè®°å½ä½ç½®çä¸ä¸ä¸ªä½ç½®çæ°æ®ã å®é ä¸ï¼å¨ä½¿ç¨next()彿°çæ¶åï¼è°ç¨çå°±æ¯è¿ä»£å¨å¯¹è±¡ç_next_æ¹æ³ï¼Python3䏿¯å¯¹è±¡ç_next_æ¹æ³ï¼Python2䏿¯å¯¹è±¡çnext()æ¹æ³ï¼ã æä»¥ï¼æä»¬è¦æ³æé ä¸ä¸ªè¿ä»£å¨ï¼å°±è¦å®ç°å®ç_next_æ¹æ³ãä½è¿è¿ä¸å¤ï¼pythonè¦æ±è¿ä»£å¨æ¬èº«ä¹æ¯å¯è¿ä»£çï¼ æä»¥æä»¬è¿è¦ä¸ºè¿ä»£å¨å®ç°_iter_æ¹æ³ï¼è_iter_æ¹æ³è¦è¿åä¸ä¸ªè¿ä»£å¨ï¼ è¿ä»£å¨èªèº«æ£æ¯ä¸ä¸ªè¿ä»£å¨ï¼ æä»¥è¿ä»£å¨ç_iter_æ¹æ³è¿åèªèº«selfå³å¯ã å ¶å®ï¼å½æä»¬ä½¿ç¨forè¯å¥çæ¶åï¼forè¯å¥å°±ä¼èªå¨çéè¿__iter__()æ¹æ³æ¥è·å¾è¿ä»£å¨å¯¹è±¡ï¼å¹¶ä¸éè¿next()æ¹æ³æ¥è·åä¸ä¸ä¸ªå ç´ ã ''' listArray = [1,2,3] iterName = iter(listArray) for i in range(0,len(listArray)): print (next(iterName)) # print (iterName) # print(next(iterName)) # print(next(iterName)) # print(next(iterName)) #çæå¨ ''' å»¶è¿æä½ãä¹å°±æ¯å¨éè¦çæ¶åæäº§çç»æï¼ä¸æ¯ç«å³äº§çç»æã >çæå¨æ¯åªè½éå䏿¬¡çã >çæå¨æ¯ä¸ç±»ç¹æ®çè¿ä»£å¨ã 第ä¸ç±»ï¼çæå¨å½æ°ï¼è¿æ¯ä½¿ç¨ def å®ä¹å½æ°ï¼ä½æ¯ï¼ä½¿ç¨yieldè䏿¯returnè¯å¥è¿åç»æã yieldè¯å¥ä¸æ¬¡è¿åä¸ä¸ªç»æï¼å¨æ¯ä¸ªç»æä¸é´ï¼æèµ·å½æ°çç¶æï¼ä»¥ä¾¿ä¸æ¬¡ä»å®ç¦»å¼çå°æ¹ç»§ç»æ§è¡ã ''' ''' ç®åå°è®²ï¼yield çä½ç¨å°±æ¯æä¸ä¸ªå½æ°åæä¸ä¸ª generatorï¼å¸¦æ yield ç彿°ä¸åæ¯ä¸ä¸ªæ®é彿°ï¼Python è§£éå¨ä¼å°å ¶è§ä¸ºä¸ä¸ª generatorï¼ è°ç¨ fab(5) ä¸ä¼æ§è¡ fab 彿°ï¼èæ¯è¿åä¸ä¸ª iterable 对象ï¼å¨ for å¾ªç¯æ§è¡æ¶ï¼ æ¯æ¬¡å¾ªç¯é½ä¼æ§è¡ fab 彿°å é¨ç代ç ï¼æ§è¡å° yield b æ¶ï¼fab 彿°å°±è¿åä¸ä¸ªè¿ä»£å¼ï¼ä¸æ¬¡è¿ä»£æ¶ï¼ 代ç ä» yield b çä¸ä¸æ¡è¯å¥ç»§ç»æ§è¡ï¼è彿°çæ¬å°åéçèµ·æ¥å䏿¬¡ä¸ææ§è¡åæ¯å®å ¨ä¸æ ·çï¼äºæ¯å½æ°ç»§ç»æ§è¡ï¼ç´å°å次éå° yieldã ''' # è²æ³¢é£åæ°å def Fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 f=Fib(10) # print (f.next()) ''' çæå¨å½æ°å¨æ¯æ¬¡æåæ§è¡æ¶ï¼å½æ°ä½å çææåéé½å°è¢«å°å(freeze)å¨çæå¨ä¸ï¼ å¹¶å°å¨æ¢å¤æ§è¡æ¶è¿åï¼å¹¶ä¸ç±»ä¼¼äºéå ï¼å³ä½¿æ¯åä¸ä¸ªçæå¨å½æ°è¿åççæå¨ï¼å°åçåé乿¯äºç¸ç¬ç«çã æä»¬çå°ä¾åä¸å¹¶æ²¡æç¨å°åéï¼æä»¥è¿éå¦å¤å®ä¹ä¸ä¸ªçæå¨æ¥å±ç¤ºè¿ä¸ªç¹ç¹ï¼ ''' def fibonacci(): a=b=1 yield a yield b while True: a,b = b,a+b yield b for num in fibonacci(): if num>100:break print (num) ##å¦ä½å¤æä¸ä¸ªå½æ°æ¯å¦æ¯ä¸ä¸ªç¹æ®ç generator 彿°ï¼å¯ä»¥å©ç¨ isgeneratorfunction å¤æï¼ from inspect import isgeneratorfunction print (isgeneratorfunction(Fib) ) # while True: # try: # x=next(f) # print("f:",x) # except StopIteration as e: # print("çæå¨æåçè¿å弿¯ï¼",e.value) # break ''' 第äºç±»ï¼çæå¨è¡¨è¾¾å¼ï¼ç±»ä¼¼äºå表æ¨å¯¼ï¼åªä¸è¿æ¯æä¸å¯¹å¤§æ¬å·[]åæ¢ä¸ºä¸å¯¹å°æ¬å·()ã 使¯ï¼çæå¨è¡¨è¾¾å¼æ¯æé产çä¸ä¸ªçæå¨ç»æå¯¹è±¡ï¼è¦æ³æ¿å°æ¯ä¸ä¸ªå ç´ ï¼å°±éè¦å¾ªç¯éåã ''' xiaoke=[2,3,4,5] # çæå¨generatorï¼ç±»ä¼¼äºlistï¼ä½æ¯æ¯æ[]æ¹ä¸º() gen=(a for a in xiaoke) for i in gen: print(i) # 为ä»ä¹è¦ä½¿ç¨çæå¨ï¼å 为æçã # 使ç¨çæå¨è¡¨è¾¾å¼å代å表æ¨å¯¼å¼å¯ä»¥åæ¶èç cpu å å å(RAM)ã # å¦æä½ æé ä¸ä¸ªå表(list)çç®çä» ä» æ¯ä¼ éç»å«ç彿°, # æ¯å¦ ä¼ éç»tuple()æè set(), é£å°±ç¨çæå¨è¡¨è¾¾å¼æ¿ä»£å§! # æ¬æ¡ä¾æ¯ç´æ¥æå表转å为å ç» kk=tuple(a for a in xiaoke) print(kk) #ç»ææ¯ï¼ (2, 3, 4, 5) # pythonå ç½®çä¸äºå½æ°ï¼å¯ä»¥è¯å«è¿æ¯çæå¨è¡¨è¾¾å¼ï¼å¤é¢æä¸å¯¹å°æ¬å·ï¼å°±æ¯çæå¨ result1=sum(a for a in range(4)) print(result1) # å表æ¨å¯¼å¼ result2=sum([a for a in range(3)]) print(result2) list=[3,2,3,4] it = iter(list) # å建è¿ä»£å¨å¯¹è±¡ for x in it: print (x, end=" ")