以自定义方式解包列表的问题

Trouble unpacking list in a customized way

我正在尝试解压缩我在 get_item() 函数中生成的一些列表。我知道如果我使用 return 而不是 yield.

我可以获得想要的结果

我试过:

def get_item():
    yield ["k","y","t"]

if __name__ == '__main__':
    for item in get_item():
        print(item)

我得到的输出:

['k', 'y', 't']

我想要得到的输出:

k
y
t

我应该进行哪些可能的更改才能获得预期的结果,同时保持 yield 不变?

从 Python 3.3 开始,您可以使用 yield from:

def get_item():
    yield from ["k","y","t"]

if __name__ == '__main__':
    for item in get_item():
        print(item)

输出:

k
y
t

yield from是Python3.3引入的新技巧,其中一小部分:

For simple iterators, yield from iterable is essentially just a shortened form of for item in iterable: yield item:

(强调我的)

您可以使用 * 运算符获得的期望结果:

def get_item():
    yield ["k","y","t"]

if __name__ == '__main__':
    print('\n'.join(*get_item()))

打印:

k
y
t

尝试以下:


def get_item():
    for _ in ["k","y","t"]:
        yield  _

if __name__ == '__main__':
    for item in get_item():
        print(item)