2017-07-28 48 views
1

我要追加两个列表中为了做一对聪明的元素进行排序[[-1, -1], [-1, -1], [4, 2], [4, 1]],使作为[[-1, -1], [-1, -1], [4, 1], [4, 2]]如何添加两个列表,使一个新的矩阵

它可能是我追加两个列表[4,1][4,2]到一个新的列表,但a.append(list)给出[4, 2, [4, 1]]。我怎么可以做成对排序或追加list[1]=[4,2]list[2]=[4,1]在为了得到newlist as [[4,1],[4,2]]代替[4, 2, [4, 1]]还能怎么办成对排序对他们的情况下直接追加如果列表为[[-1, -1], [-1, -1], [4, 2], [4, 1]][[-1, -1], [-1, -1], [4, 1], [4, 2]]

+0

你到目前为止尝试了什么?请提供[MVCE](https://stackoverflow.com/help/mcve)并澄清您卡住的位置。 – albert

+0

我试过'list1 = [4,1] list2 = [4,2] list2.append(list1)'它给出'4,2,[4,1]]' – imshashi17

+0

@albert但我想输出为' [[4,2],[4,1]]'一个2D矩阵 – imshashi17

回答

1

你想要的是一个列表的列表,所以试试这个:

In [1]: list1 = [] 

In [2]: list1.append([1,2]) 

In [3]: list1.append([3,4]) 

In [4]: list1.append([3,2]) 

In [5]: list1 
Out[5]: [[1, 2], [3, 4], [3, 2]] 

而且排序:

In [6]: sorted(list1) 
Out[6]: [[1, 2], [3, 2], [3, 4]] 
+0

除了@Johannes回答:['sorted']有一个'reverse'参数(https://wiki.python.org/moin/HowTo/Sorting),如果输出需要以相反顺序:'sorted(list1,reverse = True)' – albert

0

如果你是打开使用pandas,您可以将数组导入到一个pandas DataFrame中,然后按元素进行排序。这里有一个例子:

import pandas as pd 
df = pd.DataFrame([[-1, -1], [-1, -1], [4, 2], [4, 1]]) 
df.sort([0,1],inplace=True) 
print(df.values) 
array([[-1, -1], 
     [-1, -1], 
     [ 4, 1], 
     [ 4, 2]], dtype=int64) 
+0

对于给定的任务,使用'pandas'似乎是一种过度杀伤力。 – albert

+0

如何做到这一点,而不使用熊猫? – imshashi17

+0

,因为它需要我下载模块! – imshashi17

0

从你的例子,如果对排序一起或单独

排序对一起

>>> matrix = [[-1, -1], [-1, -1], [4, 2], [4, 1]] 
>>> sorted(matrix) 
[[-1, -1], [-1, -1], [4, 1], [4, 2]] 

排序分别对

你可以使用目前还不清楚zip转置您的矩阵,sorted对行进行排序并zip将您排序的行转回进入矩阵:

>>> zip(*matrix) 
[(-1, -1, 4, 4), (-1, -1, 2, 1)] 
>>> [sorted(row) for row in zip(*matrix)] 
[[-1, -1, 4, 4], [-1, -1, 1, 2]] 
>>> zip(*[sorted(row) for row in zip(*matrix)]) 
[(-1, -1), (-1, -1), (4, 1), (4, 2)] 

与其他矩阵作为输入,差异逐渐明朗:

>>> matrix = [[1, 2], [3, 1], [2, 3]] 
>>> sorted(matrix) 
[[1, 2], [2, 3], [3, 1]] 
>>> zip(*[sorted(row) for row in zip(*matrix)]) 
[(1, 1), (2, 2), (3, 3)] 
+0

最终输出是列表而不是列表的列表,不知道它是否重要,但只是想指出 – nanojohn

+0

@nanojohn:谢谢。更重要的是要知道如何应用排序。输入数据没有说清楚。 –