我的函数创建了一个生成器链:
def bar(num):
import itertools
some_sequence = (x*1.5 for x in range(num))
some_other_sequence = (x*2.6 for x in range(num))
chained = itertools.chain(some_sequence, some_other_sequence)
return chained
我的函数有时需要以chained
相反的顺序返回。从概念上讲,以下是我希望能够做的事情:
if num < 0:
return reversed(chained)
return chained
很遗憾:
>>> reversed(chained)
TypeError: argument to reversed() must be a sequence
我有哪些选择?
这是一些实时图形渲染代码,所以我不想让它太复杂/太慢。
编辑:当我第一次提出这个问题时,我没有考虑过发电机的可逆性。正如许多人指出的那样,发电机不能逆转。
实际上,我确实想反转链的扁平内容;不仅仅是生成器的顺序。
根据回复,我无法使用单个调用来反转 itertools.chain,因此我认为这里唯一的解决方案是使用列表,至少对于反向情况,也许两者兼而有之。