从可迭代映射中生成单个值



我有一个函数,可以将一个可迭代对象的元素映射到另一个可迭代对象。然后,我想从此对象的扁平化版本中获取单个项目。以下代码对我想要的模型进行建模:

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生成的值很大,我不想尝试将整个列表保存在内存中。有没有办法即时执行此操作,这样我就不会存储/预计算那么多。

链包含一个用于延迟解包的功能: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

最新更新