[python]: проблема с передачей map() с функцией и двумя списками с разными размерами

предположим, у меня есть список, скажем

lst1 = [1,2,3,4]

и еще один список, скажем

lst2 = [8,9]

и функция, скажем

func = lambda x,y: x+y

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

[1+8+9, 2+8+9, 3+8+9, 4+8+9].

как я могу сделать это с помощью карты ()?


person Synapse    schedule 04.08.2011    source источник
comment
Зачем тебе делать это с map()?   -  person Kabie    schedule 04.08.2011
comment
@Synapse: при чем тут твой func? Его надо где-то использовать?   -  person Gerrat    schedule 04.08.2011
comment
@Gerrat: Нет, по func, я просто хочу продемонстрировать свой вопрос.   -  person Synapse    schedule 04.08.2011


Ответы (1)


Ваша функция - это просто оператор добавления, поэтому вы можете использовать «добавить» из модуля оператора следующим образом:

from operator import add
lst = [1,2,3,4]
sLst = [8,9]
map(lambda x: add(x, sum(sLst)), lst)
>>> [18,19,20,21]

Можно использовать карту, но обычно это не так быстро, как простое понимание списка, которое также выглядит довольно понятным:

from operator import add
lst = [1,2,3,4]
sLst = [8,9]
[add(x, sum(sLst)) for x in lst]
>>> [18,19,20,21]
person Artsiom Rudzenka    schedule 04.08.2011