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

我的文件/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

最佳答案

您只有一个外部循环,并且只需使用next抓取文件的第一行。但是您也想遍历fh-即应该有两个循环。

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

关于python - 在next()中使用yield,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52956275/

10-12 21:49