2016-12-03 2 views
-1

У меня есть функция генератора, которую я хочу применить к каждому элементу в списке. Выполнение 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) но питон говорит мне, что это просто бред.

Я могу сделать то, что хочу, со списком, но я не могу понять, как это сделать с картой.

пример кода является

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)) для элемента в my_list] ' – AChampion

ответ

1

В этом случае вы можете использовать lambda:

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

Это относится list(foo(e)) для каждого элемента e в your_list.

Смежные вопросы