2013-04-24 98 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

相关问题