Finden von minimalen, maximalen und durchschnittlichen Werten für verschachtelte Listen?

Also habe ich diese Listen:

Player1 = ["Ryan", 24, 19] Player2 = ["Jamie", 22, 24] Player3 = ["Alicia", 17, 15] Player4 = ["Dominique", 13, 11] Player5 = ["Michael", 18, 23] PlayerList = [Player1, Player2, Player3, Player4, Player5] 

Das Format ist [Name des Spielers, erste Runde Punktzahl, zweite Runde Punktzahl]

Wie schreibe ich einen Code, um den höchsten Wert zu finden, sowie den Durchschnitt für die erste und die zweite Punktzahl?

EDIT: Ich glaube, ich müsste den "Namen der Spieler mit der höchsten Punktzahl" statt der "höchsten Punktzahl" drucken, aber ich weiß nicht, wie das zu tun ist:

3 Solutions collect form web for “Finden von minimalen, maximalen und durchschnittlichen Werten für verschachtelte Listen?”

Höchster Wert:

 max(max(p[1:]) for p in PlayerList) 

Niedrigster Wert:

 min(min(p[1:]) for p in PlayerList) 

Mittelwerte für jeden Spieler ::

 [float(p[1] + p[2]) / 2 for p in PlayerList] 

ETA: Per Kommentar, der Name des Spielers mit der höchsten Punktzahl:

 max(PlayerList, key=lambda p: max(p[1:]))[0] 

Max und min:

 >>> max(PlayerList, key=lambda p: max(p[1:])) ['Ryan', 24, 19] >>> min(PlayerList, key=lambda p: min(p[1:])) ['Dominique', 13, 11] 

Durchschnittlich ist etwas schmutziger:

 >>> [(p[0], sum(p[1:]) / 2.) for p in PlayerList] [('Ryan', 21.5), ('Jamie', 23.0), ('Alicia', 16.0), ('Dominique', 12.0), ('Michael', 20.5)] 

Um die Spieler mit der höchsten und niedrigsten Punktzahl in jeder Runde zu finden:

 (max_score, max_player) = max( (max(a, b), player) for (player, a, b) in players ) (min_score, min_player) = min( (min(a, b), player) for (player, a, b) in players ) 

Wenn Sie stattdessen die Spieler mit den höchsten und niedrigsten Gesamtscores wünschen, ersetzen Sie einfach max(a, b) und min(a, b) mit a + b .

Beachten Sie, dass dies einen einzigen besten / schlechtesten Spieler, auch wenn es eine Krawatte ist.

Um Mittelwerte der ersten und zweiten Punktzahl zu finden:

 avg_round1 = float(sum( a for (_, a, _) in players )) / len(players) avg_round2 = float(sum( b for (_, _, b) in players )) / len(players) 
  • Rückkehr der höchste von zwei Nicht-Typen
  • Python: Maximale Daten suchen
  • Wie konvertiere ich ein Tupel der Tiefe 2 zu einem 2D Numpy Array?
  • Python - Verifizieren, ob eine Liste eine Untermenge des anderen ist
  • Summe / Durchschnitt ein Attribut einer Liste von Objekten in Python
  • Angesichts einer Liste von Wörterbüchern, wie kann ich Duplikate von einem Schlüssel beseitigen und nach einem anderen sortieren
  • Iterative finden / ersetzen aus einer Liste von Tupeln in Python
  • Python - Verlängern einer Liste führt direkt zu keiner, warum?
  • Warum macht das Erstellen einer Liste aus einer Liste es größer?
  • Wie man alle Nicht-Null-Elemente in einer Python-Liste oder numpy Array auf eine Seite zu bewegen?
  • Liste in Java so elegant wie in Python anzeigen
  • Python ist die beste Programmiersprache der Welt.