【发布时间】:2017-10-09 17:58:57
【问题描述】:
从 python 中的函数产生时如何连接两个项目?
基本情况:
import itertools
def test():
for number in range(0,10):
yield number
list(test()) # [0...9]
如果我想同时生成 number 和它的正方形 number**2 怎么办
import itertools
def test():
for number in range(0,10):
yield itertools.chain.from_iterable([
number,number*2
])
list(test())
# [0,0,1,1,2,4,3,9,...] pretended
# <itertools.chain at 0x135decfd0> ... what I got
但是,从外部执行 itertools.chain.from_iterable([generator1, generator2]) 会产生预期的结果。
def first_list():
for number in range(0,5):
yield number
def second_list():
for number in range(5,10):
yield number
list(itertools.chain.from_iterable([first_list(), second_list()]))
【问题讨论】:
-
为什么不简单:
yield number <newline> yield number**2? -
你不想连接,你想要一个双倍的收益......这是不同的。
-
从外面他们出来串联