以自定义方式拆箱清单时遇到麻烦



我正在尝试解压缩我在函数中产生的一些列表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是 Python 3.3 中引入的一个新技巧,其中的一小部分:

对于简单的迭代器,来自可迭代的 yield 本质上只是可迭代中 for 项的缩写形式: 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)

最新更新