Python добавляет элементы списка (или Set, или любой другой тип данных) - PullRequest
3 голосов
/ 20 января 2012

Есть ли простой способ добавить элементы двух одинаковых по размеру list с (или tuple или любой другой тип данных, который будет работать лучше всего)?

У меня есть, например, a и b с 2 элементами:

a = (0, 10)
b = (0, -10)

Я хочу добавить их и получить в результате:

result = (0, 0)

НЕ (0, 10, 0, -10)

Ответы [ 6 ]

6 голосов
/ 20 января 2012

Вы можете сделать это в одной строке в Python:

map(sum, zip(A, B))

Пример:

>>> B = [1, 2, 3, 4]
>>> C = [1, 2, 4, 8]
>>> map(sum, zip(B, C))
[2, 4, 7, 12]
5 голосов
/ 20 января 2012

Три варианта:

>>> [a+b for (a,b) in zip(A,B)]
>>> map(int.__add__, A, B)
>>> map(sum, zip(A,B))
1 голос
/ 20 января 2012

, если вы хотите работать со списком номеров, используйте numpy

>>> a = [1,2]
>>> b = [1,2]
>>> import numpy as np
>>> np.add(a,b)
array([2, 4])
>>> 
0 голосов
/ 20 января 2012
List ANSWER = ()
for index in range(0, len(A))
  ANSWER.append(A[index]+B[index])
0 голосов
/ 20 января 2012

Вы можете использовать numpy для добавления списков:

add(array([-1.2, 1.2]), array([1,3]))

и результат его:

array([-0.2, 4.2])
0 голосов
/ 20 января 2012

да, просто сделайте это

map(sum,zip(A,B)

или (на самом деле явно быстрее)

u=map(lambda a,b:a+b,A,B)

Примеры синхронизации:

A=range(3000)
B=range(3000)
for i in range(15000):
 u=map(lambda a,b:a+b,A,B)   # takes about 7.2 seconds
 # u=map(sum,zip(A,B))       # takes about 11 seconds
 # u=map(int.__add__,A,B) # (Edward Loper) actually also consistently ~0.5 sec slower than lambda
...