日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

14生成器

發(fā)布時間:2024/9/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 14生成器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 生成器:生成器與迭代器可以看成一種,生成器的本質就是迭代器。
  • 唯一區(qū)別,生成器是我們自己用python代碼構建的數(shù)據(jù)結構,迭代器是系統(tǒng)提供的或者轉化得來的。
  • 獲取生成器的三種方式:
    • 生成器函數(shù)
    • 生成器表達式
    • python內部提供的一些

生成器函數(shù)獲得生成器

def func(): # 普通函數(shù)print(111)print(222)return 3 ret = func() print(ret) # 111 # 222 # 3 def func(): #生成器函數(shù)print(111)print(222)yield 3a = 1b = 2c = a + bprint(c)yield 4 ret = func()print(ret) # <generator object func at 0x0000020147426ED0> print(next(ret)) # 111 # 222 # 3 print(next(ret)) # 一個next對應一個yield # 3 # 4
  • return和yield的區(qū)別:
    • return:函數(shù)中只存在一個return結束函數(shù),并且給函數(shù)的執(zhí)行者返回值
    • yield:只要函數(shù)中有yield那么他就是生成器函數(shù)而不是函數(shù)
  • 生成器函數(shù)中可以存在多個yield,yield不會結束生成器函數(shù),一個yield對應一個next
def func():lst = []for i in range(10000):lst.append("數(shù)據(jù)%s"% i)if i % 10 == 0:yield lstlst = [] # g = func() print(next(g)) #['數(shù)據(jù)0'] print(next(g)) # #['數(shù)據(jù)1', '數(shù)據(jù)2', '數(shù)據(jù)3', '數(shù)據(jù)4', '數(shù)據(jù)5', '數(shù)據(jù)6', '數(shù)據(jù)7', '數(shù)據(jù)8', '數(shù)據(jù)9', '數(shù)據(jù)10'] print(next(g)) # #['數(shù)據(jù)11', '數(shù)據(jù)12', '數(shù)據(jù)13', '數(shù)據(jù)14', '數(shù)據(jù)15', '數(shù)據(jù)16', '數(shù)據(jù)17', '數(shù)據(jù)18', '數(shù)據(jù)19', '數(shù)據(jù)20'] def gen():for i in range (10):yield ig = gen() # 生成器 a = g.__next__() print (a) a = g.__next__() print (a) a = g.__next__() print (a) # 0 # 1 # 2 for i in gen():print (i)# 0 1 2 3 4 5 6 7 8 9 # lst = list(g) print (lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] def func():for i in range(1,5001):yield f'{i}號數(shù)據(jù)' ret = func() for i in range(200):print(next(ret)) # 1號數(shù)據(jù) # 2號數(shù)據(jù) # 3號數(shù)據(jù) # ...... # 200號數(shù)據(jù) def func():l1 = [1,2,3,4,5]yield l1ret = func() print(next(ret)) #[1, 2, 3, 4, 5]def func():l1 = [1,2,3,4,5]yield from l1 # 將l1 這個列表變成了迭代器返回ret = func() print(next(ret)) # 1 print(next(ret)) # 2 def func():lst1 = ["衛(wèi)龍","老冰棍","北冰洋","牛羊配"]lst2 = ["包子","饅頭","花卷","大餅"]yield from lst1yield from lst2g = func() for i in range(8):print(next(g))# 衛(wèi)龍# 老冰棍# 北冰洋# 牛羊配# 包子# 饅頭# 花卷# 大餅

總結

以上是生活随笔為你收集整理的14生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。