Sortierliste von Listen und Ermitteln von Indizes in unsortierter Liste

8

Dies sind die logischen Schritte, die ich auf meiner Liste von Listen durchführen muss

%Vor%
  1. Sortieren Sie die Liste der Listen so, dass die Ausgabe ungefähr wie

    aussieht %Vor%
  2. nehmen die Koordinaten der sortierten Elemente in der ursprünglichen Liste, die in diesem Fall als Ausgabe

    produzieren sollte %Vor%

Ich habe versucht, sort, sorted und argwhere auf verschiedene Arten zu verwenden, aber ich bekomme keine vernünftigen Ergebnisse, ich denke zuerst, weil sort und sorted eine Liste nach nur einer Achse gleichzeitig sortieren können

    
johnhenry 01.11.2016, 10:17
quelle

5 Antworten

8

Dieser Code funktioniert für eine Liste von Listen. Die internen Listen müssen nicht gleich lang sein.

Auf jeder Ebene durchlaufen wir eine Liste mit enumerate , um das Listenelement und seinen Index zu erhalten. Auf der obersten Ebene ist jedes Element eine andere Liste, und die innere Schleife iteriert jede dieser Listen, um ihre Indizes und Werte abzurufen und die Indizes (als Tupel) in einem Tupel zu speichern, das auch den Wert enthält. Wir sortieren dann die resultierende Tupelliste ( b ) nach den Werten und teilen sie dann mit zip in ein Tupel aller Indizes und ein Tupel der Werte auf.

%Vor%

Ausgabe

%Vor%     
PM 2Ring 01.11.2016, 10:29
quelle
8

Erstellen Sie ein Wörterbuch mit den Schlüsseln als die tatsächlichen Koordinaten und die Werte als die Zahlen selbst, wie dieses

%Vor%

Sortieren Sie nun die Schlüssel (Koordinaten) von positions basierend auf ihren Werten, wie dieser

%Vor%     
thefourtheye 01.11.2016 10:25
quelle
2

Sie können eine Reihe von Listen-Comprehensions und zip Blöcken verwenden, obwohl die Lesbarkeit leidet:

%Vor%

Wenn Sie ein Diktat benötigen, ersetzen Sie einfach die zip(*..) Schicht durch dict()

    
kezzos 01.11.2016 11:12
quelle
2

Verwenden Sie Numpy , was bei größeren Arrays viel schneller ist als normaler Python-Code:

%Vor%     
Kasramvd 01.11.2016 13:00
quelle
1

Sie können die Liste reduzieren und sie dann zum Sortieren und Suchen von Indizes verwenden.

%Vor%

Ausgabe:

%Vor%     
vks 01.11.2016 10:27
quelle

Tags und Links