Как мне отменить объект itertools.chain?

Моя функция создает цепочку генераторов:

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

Моя функция иногда должна возвращать в цепочке в обратном порядке. По сути, я хотел бы иметь возможность сделать следующее:

if num < 0:
    return reversed(chained)
return chained

К сожалению: Когда я впервые задал этот вопрос, я не думал об обратимости генераторов. Как многие отмечали, генераторы не могут быть отменены.

Я действительно хочу обратить сглаженное содержимое цепочки на обратное; не только порядок генераторов.

Судя по ответам, нет единственного вызова, который я мог бы использовать для реверсирования itertools.chain, поэтому я думаю, что единственное решение здесь - использовать список, по крайней мере, для обратного случая , и, возможно, для обоих.

9
задан Steven T. Snyder 15 February 2011 в 22:26
поделиться