我正在尝试解压缩我在函数中产生的一些列表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)