2017-04-21 3 views
-2

Hallo, ich arbeite an dieser Aufgabe.Python-Extraktliste mit besserer Punktzahl

Ich möchte genau die Hälfte der Liste mit besserer Punktzahl extrahieren (je kleiner desto besser). Zum Beispiel:

s=[[1,2,3],[1,3,2],[2,1,3,[3,1,2],[3,2,1],[2,3,1]] 

Die entsprechende Punktzahl der Liste s

score=[13,14,24,28,17,17] 

Mein Wunsch Ausgabe lautet: ss nur 3

ss =[[1,2,3],[1,3,2],[3,2,1]] 

oder ss =[[1,2,3],[1,3,2],[2,3,1]] enthalten sollte. Da die letzten beiden Listen die gleiche

Score
+2

Was ist die Frage? – brianpck

+0

Was ist die Logik hinter Scoring-Listen? – Arman

Antwort

0

Versuch:

[i for i, j in sorted(zip(s, score), key=lambda x: x[1])[:3]] 
+0

Vielen Dank! – user02

0

Um dies zu erreichen, können Sie unter Schritte ausführen:

  1. Sortieren Sie die Liste von scores aufsteigend und nutzen Sie die niedrigsten n Partituren
  2. Fetch Element von s Liste auf dem Index des Auftretens von n kleinsten Zahlen in der scores Liste basiert ist

Unterhalb der Beispielcode es über u zu erreichen singen Liste Verständnis und list.index(..) Verfahren (Schritte als Kommentar erwähnt werden):

>>> s=[[1,2,3],[1,3,2],[2,1,3],[3,1,2],[3,2,1],[2,3,1]] 
>>> score=[13,14,24,28,17,17] 
>>> smallest_num_count = 3 # count of desired numbers 

# Get lowest three scores   v slice list from the start 
>>> smallest_scores = sorted(score)[:smallest_num_count] 
#     ^sorts the `score` list in ascending order 

#    v returns index of the first occurrence of the 
#    v `i` element in `score` lsit 
>>> [s[score.index(i)] for i in smallest_scores] 
[[1, 2, 3], [1, 3, 2], [3, 2, 1]] 
+0

Vielen Dank – user02