亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在通過 map() 調用的函數中使用 yield 關鍵字而不是 return

在通過 map() 調用的函數中使用 yield 關鍵字而不是 return

繁花不似錦 2022-06-28 17:17:57
我正在使用 map() 將函數 x 應用于元素列表。map() 返回一個產生結果的迭代器。但是,函數 X 已經產生了值,而不是返回。我只需要使用一次 yield 。def x(line):    columns = line.strip().split('\t')    yield columnsvalues = [ 'a\tb\tc\td\n',           'g\tc\tq\tm\n',           's\tp\to\td\n'         ]iters = map(x, values)for i in iters:  print(next(i))它輸出['a', 'b', 'c', 'd']['g', 'c', 'q', 'm']['s', 'p', 'o', 'd']代碼運行,我沒有任何錯誤。但是,我認為這是過度的,因為我兩次“輸出”輸出。我很想知道是否應該使用 return 關鍵字更改函數 x。
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

Map無需yield在函數定義中創建生成器本身。

使用return就足夠了。


查看完整回答
反對 回復 2022-06-28
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

您在這里所做的與此類似


values = [5 , 9]

iters = map(range, values)

當您申請x時,您values正在創建一個(actually a generator because map return a generator in 3.x).generators


for it in iters:

    for value in it:

        # do somthing


查看完整回答
反對 回復 2022-06-28
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號