Моя функция создает цепочку генераторов:
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
Какие у меня варианты?
Это в некоторыхграфический рендеринг в реальном времени, поэтому я не хочу делать его слишком сложным / медленным.
EDIT : Когда я впервые задал этот вопрос, я не думал об обратимости генераторов.Как отмечали многие, генераторы не могут быть обращены вспять.
На самом деле я хочу обратить вспять уплощенное содержимое цепи;не только порядок генераторов.
Судя по ответам, нет единого вызова, который я могу использовать для обращения к itertools.chain, поэтому я думаю, что единственным решением здесь является использование списка, по крайней мере дляобратный случай, и, возможно, для обоих.