代码之家  ›  专栏  ›  技术社区  ›  Juicy

将收益率与next()一起使用

  •  2
  • Juicy  · 技术社区  · 6 年前

    我正在尝试创建一个生成器,将列表中的每一项与文件的每一行连接起来。

    我的文件 /tmp/list 包含:

    foo
    bar
    

    我的代码是:

    mylist = [
        'hello',
        'world'
    ]
    
    def _gen():
        for x in mylist:
            with open('/tmp/list') as fh:
                yield('-'.join([x, next(fh)]))
    
    
    for i in _gen():
        print(i)
    

    我得到的结果是:

    hello-foo
    world-foo
    

    hello-foo
    hello-bar
    world-foo
    world-bar
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   wim    6 年前

    你只有一个外环,你只要抓住 第一 next . 但是你需要在 fh 也就是说,应该有 循环。

    for x in mylist:
        with open('/tmp/list') as fh:
            for line in fh:
                yield '-'.join([x, line.strip()])