2013-12-16 6 views

ответ

9

Это работает:

>>> ListA = [1,2,3] 
>>> ListB = [10,20,30] 
>>> list(map(sum, zip(ListA, ListB))) 
[11, 22, 33] 
>>> 

Все встроенные модули, используемые выше объясняются here.


Другим решением является использование list comprehension.

В зависимости от вашего вкуса, вы можете сделать это:

>>> [sum(x) for x in zip(ListA, ListB)] 
[11, 22, 33] 
>>> 

или это:

>>> [x+y for x,y in zip(ListA, ListB)] 
[11, 22, 33] 
>>> 
+0

На мой конец мне нужно написать '[k для k в map (...)]', чтобы получить его для создания списка, иначе я получаю '<объект карты в 0x02380730>', возможно, это другое для Python 3. –

+0

@ LasseV.Karlsen - Да, это так. Мои извинения. Я не видел тег Python 3.x. Я обновил свой пост. – iCodez

+0

@ LasseV.Karlsen Да, в Python 2 'map' возвращает список, тогда как в Python 3 он возвращает объект-генератор. – Roberto

3

@iCodez дала большой резонанс, но в тех случаях, которые относятся к более сложным ситуациям, и там потребует значительного количества манипуляций (и конкатенации) между списками, numpy - отличный и мощный инструмент для изучения! Это, как вы бы решить проблему с NumPy:

#import it 
import numpy as np 
#state your lists as numpy arrays 
array1 = np.array(ListA) 
array2 = np.array(ListB) 

, которая затем создает оба ваших списков как Numpy массивов. Теперь все, что вы делаете, это добавить их!

>>> concatenated = array1 + array2 
>>> print concatenated 
[11, 22, 33] 

Теперь это возвращает экземпляр Numpy массива, так что если вы хотите его в виде списка, вы можете просто сделать concatenated.tolist(). Как вы можете видеть, это довольно полезно при сопоставлении математических операций между списками. Существует много, что вы можете сделать с numpy, и я предлагаю изучить его.

Примечание: Я понимаю, что использование numpy для решения такой простой простой проблемы является более исчерпывающим, чем необходимо, но на всякий случай это было быстрым «как я могу разрешить операции в нескольких списках», numpy значительно облегчит вашу жизнь!

+0

Достаточно справедливо: возможно, просто - 'np.add (ListA, ListB)' вместо этого ... –

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