将生成器映射到列表

问题描述:

我有一个生成器函数,我想要应用于列表中的每个项目。 做一个 map(foo,var_list),让我像一个结果:将生成器映射到列表

[<generator object window at 0x7f20720b1050>, <generator object window at 0x7f20720b10a0>, <generator object window at 0x7f20720b10f0>, <generator object window at 0x7f20720b1140>, <generator object window at 0x7f20720b1190>]

所以我想我会“迫使”其来计算使用map(list(foo),var_list)但是Python告诉我这只是无稽之谈。

我可以做我想要的一个列表理解,但是我无法理解如何用地图来做到这一点。

一个代码示例是

from itertools import islice 

def window(seq, n=4): 
    if len(seq)<n: 
     yield seq 
    "Returns a sliding window (of width n) over data from the iterable" 
    " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...     " 
    it = iter(seq) 
    result = tuple(islice(it, n)) 
    if len(result) == n: 
     yield result  
    for elem in it: 
     result = result[1:] + (elem,) 
     yield result 

result = [] 
input = 'Hello my name is Steven' 

而我失败的命令是map(window,input.split())

+2

不要使用'list'作为变量名:'map(list,map(foo,my_list))'或'[list(foo(item))for my_list]' – AChampion

在这种情况下,你可以使用lambda

map(lambda e: list(foo(e)), your_list) 

这为your_list每个元素e适用list(foo(e))