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) 
  • Mylist = list () vs mylist = [] in Python [duplizieren]
  • Weisen Sie jedem einzelnen Wert in einer Liste eine Nummer zu
  • Welches ist der effizienteste Weg, um durch eine Liste in Python zu iterieren?
  • Iterate eine Liste von Tupeln
  • Pythonic Way to Create Union aller Werte in mehreren Listen enthalten
  • Angesichts einer Liste von Elementen in lexikographischer Reihenfolge (dh ['a', 'b', 'c', 'd'), finden Sie die n-te Permutation - Durchschnittliche Zeit zu lösen?
  • Ignoriere ein Element bei der Aufzählung in Python
  • Python initialisiert eine Liste der Listen [doppelte]
  • Ellipse listet [...] und verkettet eine Liste zu sich selbst in Python
  • Unterschied zwischen Hinzufügen von Listen in python mit + und + =
  • Paarweise in Python
  • Python ist die beste Programmiersprache der Welt.