1 至關於: 2 a = [] 3 for i in rang(10): 4 a.append(i*2) 5 6 print(a)
注意:相似python 2.7裏的range(100)和xrange(100)
一、rang:是逐個返回1~100範圍值。
二、xrang:是返回一個內存地址,該地址包含了100的值,只有在for循環時纔會顯示
三、使用xrang的優點,結合python的垃圾回收機制,能夠循環使用同一個python
1 li = [11,22,33,44,55,34] 2 result= filter(lambda x:x>33,li) 3 print(result) 4 5 返回一個對象: 6 <filter object at 0x0000000000A55128> 7 8 9 #返回結果:具備生成指定條件數據的能力的一個對象。只有在循環它的時候生成 10 #是一個內存地址,該地址包括大於33的全部值 11 #該結果只有在for循環時纔會顯示
1 def func(): 2 yield 1 3 yield 1 4 yield 1 5 6 ret = func() 7 print('ret:',ret) 8 9 顯示結果 10 ret: <generator object func at 0x0000000000A38938> 11 12 13 #只要函數中出現yield,則會變成生成器,返回內存地址<generator object func at 0x00000000011388E0>
1 for i in ret: 2 print('foi循環:',i) 3 4 5 6 顯示結果: 7 foi循環: 1 8 foi循環: 1 9 foi循環: 1
1 def myrange(arg): 2 start = 0 3 while True: 4 if start > arg: 5 return 6 yield start 7 start += 1 8 9 ret = myrange(3) 10 11 r = ret.__next__() #進入函數,找到yield,獲取yield後面的數據,每運行一次,生成器就會往下執行一個數值: 12 print(r) 13 r = ret.__next__() 14 print(r) 15 r = ret.__next__() 16 print(r) 17 r = ret.__next__() 18 print(r) 19 20 顯示結果: 21 0 22 1 23 2 24 3