2017-07-28 64 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:謝謝。更重要的是要知道如何應用排序。輸入數據沒有說清楚。 –