Получите отдельные значения из карты итерируемого - PullRequest
0 голосов
/ 19 июня 2020

У меня есть функция, которая сопоставляет элементы итерируемого объекта другому итерируемому. Затем я хочу получить отдельные элементы из плоской версии этого объекта. Следующий код моделирует то, что я хочу:

a = [1, 2 ,3 , 4]
b = map(lambda x:(x, x), a)
c = itertools.chain(*b)
# next(c) returns `1`, `1`, `2`, etc

Однако, если a очень велик или значения, созданные моим map, большие, я не хочу пытаться удерживать весь список в памяти. Есть ли способ сделать это "на лету", чтобы не хранить / предварительно вычислять столько же.

1 Ответ

0 голосов
/ 19 июня 2020

Цепочка включает функцию ленивой распаковки: itertools.chain.from_iterable. В приведенном примере:

a = [1, 2 ,3 , 4]
b = map(lambda x:(x, x), a)
c = itertools.chain.from_iterable(b)
# next(c) returns `1`, `1`, `2`, etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...