2015-02-08 71 views
1

如何在清單清單中對清單中的清單對進行配對?在清單列表中添加清單中的項目

A=[[ 1,2 ],[ 3 , 4]] 
B=[[ 4,5 ],[ 8 , 9]] 
->(1,4),(2,5),(3,8),(4,9) 

我已經試過類似zip(*A,*B)但我越來越SyntaxError: only named arguments may follow *expression

到底是什麼,我試圖做的是將它們添加:

A=[[ 1,2 ],[ 3 , 4]] 
B=[[ 4,5 ],[ 8 , 9]] 
    =[[ 5,7 ],[ 11 , 13]] 

(也不起作用):

add= [i+j for i,j in zip(*A,*B)] 

回答

2

首先,zip均爲AB然後是zip個由以前zip給出這樣

result = [] 
for items in zip(A, B): 
    for data in zip(*items): 
     result.append(data) 

同樣的列表可以簡潔地寫成一個列表理解,這樣

>>> [data for items in zip(A, B) for data in zip(*items)] 
[(1, 4), (2, 5), (3, 8), (4, 9)] 
0

考慮使用numpy

>>> A = [[1, 2], [3, 4]] 
>>> B = [[4, 5], [8, 9]] 
>>> import numpy 
>>> numpy.array(A) + numpy.array(B) 
array([[ 5, 7], 
     [11, 13]]) 

>>> list(map(list, _)) 
[[5, 7], [11, 13]]