2017-07-28 3 views
1

i als um anhängen zwei Liste machen wollen [[-1, -1], [-1, -1], [4, 2], [4, 1]] ein Paar weise Art von Elementen zu tun, um als [[-1, -1], [-1, -1], [4, 1], [4, 2]]wie zwei Liste hinzufügen, um eine neue Matrix

kann es sein, dass ich zwei Liste anhängen [4,1] und [4,2] in eine neue Liste, aber a.append(list) gibt [4, 2, [4, 1]]. Wie kann ich tun, um eine paarweise sortieren oder anhängen list[1]=[4,2] und list[2]=[4,1] wie um newlist as [[4,1],[4,2]] statt [4, 2, [4, 1]] auch zu bekommen, wie direkt auf sie paarweise Art zu tun, ohne anhängt, wenn die Liste ist als [[-1, -1], [-1, -1], [4, 2], [4, 1]]-[[-1, -1], [-1, -1], [4, 1], [4, 2]]

+0

Was haben Sie bisher versucht? Bitte geben Sie einen [MVCE] (https://stackoverflow.com/help/mcve) an und klären Sie, wo Sie stecken geblieben sind. – albert

+0

ich probierte 'list1 = [4,1] list2 = [4,2] list2.append (list1)' es gibt '4, 2, [4, 1]]' – imshashi17

+0

@albert aber ich will Ausgabe als ' [[4,2], [4,1]] 'Eine 2D Matrix – imshashi17

Antwort

1

Was möchten Sie ist eine Liste von Listen, so versuchen Sie dies:

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]] 

Und sortiert:

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

Zusätzlich zu @Johannes Antwort: Es gibt ein 'reverse' Argument für [' sorted'] (https://wiki.python.org/moin/HowTo/Sorting) was sehr praktisch ist, wenn die Ausgabe in umgekehrter Reihenfolge erfolgen muss : 'sortiert (list1, reverse = True)' – albert

0

Wenn Sie Öffnen Sie mit pandas, können Sie Ihr Array in einen Pandas DataFrame importieren, und dann nach Elementen sortieren. Hier ein Beispiel:

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

Die Verwendung von' Pandas' scheint eine Art Overkill für die gegebene Aufgabe zu sein. – albert

+0

wie es ohne Pandas zu tun? – imshashi17

+0

weil ich Module herunterladen muss! – imshashi17

0

Von Ihrem Beispiel ist es nicht klar, ob die Paare zusammen sortiert werden oder separat

Sortieren Paare zusammen

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

Sortieren Paare getrennt

können Sie verwenden zip zum Transponieren der Matrix, sorted zum Sortieren der Zeilen und zip zum Transponieren der sortierten Zeilen in die Matrix:

>>> 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)] 

Mit anderen Matrix als Eingabe, wird der Unterschied deutlicher:

>>> 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

Endgültige Ausgabe ist Liste der Tupel statt Liste der Liste, nicht sicher, ob es darauf ankommt, aber wollte nur darauf hinweisen, – nanojohn

+0

@nanojohn: Danke. Wichtiger wäre zu wissen, wie die Sortierung angewendet werden sollte. Die Eingabedaten machen es nicht klar. –

Verwandte Themen