为了账号安全,请及时绑定邮箱和手机立即绑定

在通过 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 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信