2013-04-24 113 views
2

我想借以下列表:的Python:插入列表的列表到列表的另一個列表

matrix1 = [ 
[1, 2, 3, 4], 
[5, 6, 7, 8], 
[9, 10, 11, 12] 
] 

matrix2 = [ 
[A, B, C, D], 
[E, F, G, H] 
] 

,並結合成:

new_matrix = [ 
[A, B, C, D], 
[E, F, G, H], 
[1, 2, 3, 4], 
[5, 6, 7, 8], 
[9, 10, 11, 12] 
] 

而且我似乎無法到找出一個好方法。 Insert()將整個列表放入,產生列表列表。任何建議,將不勝感激!

回答

6

只需添加它們!

new_matrix = matrix1 + matrix2 
+0

好了,不要我覺得愚蠢。謝謝:) – user2238685 2013-04-24 23:17:59

2

使用extend它用另一個擴展列表而不是插入它裏面。

>>> matrix2.extend(matrix1) 

然而,這將使中發生的變化,而不是創建一個新的列表,這可能是你想要的。如果你想創建一個新的,那麼+是你所需要的。

+2

+1,值得注意的是,雖然這是正確的,但OP顯示了一個保存值的新變量,而這會在原地修改列表。這顯然取決於哪個是想要的。 – 2013-04-24 20:49:02

+0

@Lattyware謝謝你的注意。我已經更新了答案,以表明這一點。 – Meitham 2013-04-24 20:52:46

3

使用+添加它們:

In [59]: new_matrix = matrix2 + matrix1 

In [60]: new_matrix 
Out[60]: 
[['A', 'B', 'C', 'D'], 
['E', 'F', 'G', 'H'], 
[1, 2, 3, 4], 
[5, 6, 7, 8], 
[9, 10, 11, 12]] 
0

只需使用+運營商名單,數量

>>> a = [[1],[2],[3]] 
>>> b = [[4],[5],[6]] 
>>> a+b 
[[1], [2], [3], [4], [5], [6]] 
>>> 
0

通用的解決方案:

或者:

new_matrix = list(itertools.chain(matrix1, matrix2, matrix3, ...) 

或者:

new_matrix = sum(matrix1, matrix2, matrix3, ..., default=[]) 

或用列表的列表:

new_matrix = list(itertools.chain(*matrices) 

或者:

new_matrix = sum(*matrices, default=[]) 
+1

-1,[sum()的文檔特別推薦這種用法](http://docs.python.org/3.3/library/functions.html#sum)。 ['itertools.chain()'](http://docs.python.org/3/library/itertools.html#itertools.chain)是更好的解決方案。 – 2013-04-24 20:50:26

+0

@Lattyware:請指出在希望將'list'作爲endresult的情況下,推薦哪一部分? OP沒有要求迭代,是嗎? – Wolph 2013-04-24 20:52:06

+0

@Lattyware:你喜歡'list(itertools.chain(* matrices))'而不是? – Wolph 2013-04-24 20:53:04