以自定义方式解包列表的问题
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)
我正在尝试解压缩我在 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)