можем ли мы создать условный zip-архив, который не потребляет ввод при ложном значении? - PullRequest
0 голосов
/ 29 мая 2020

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

Я использовал документы itertools в качестве справки что очень полезно, но кажется, что то, что я хочу сделать, невозможно в itertools.

вот тест, который я хочу передать:

    def test_itertools_example(self):
        import itertools
        cond = itertools.cycle([True, False])
        none = itertools.repeat(None)
        data = itertools.count(1, 1)
        every_other = (d if c else n for (c, d, n) in zip(cond, data, none))
        assert next(every_other) == 1
        assert next(every_other) is None
        assert next(every_other) == 2  # this is 3 and i want 2 but 2 got dropped on the previous call
        assert next(every_other) is None

1 Ответ

2 голосов
/ 29 мая 2020

Можно просто написать:

every_other = (next(data) if c else next(none) for c in cond)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...