Seite 1 von 1

Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 21:47
von reddy
Hallo,

Ich habe eine Liste mit Dax-Kursen:
liste = [['DAX (EDE)', '20.12.2018', 10611.1], ['DAX (EDE)', '21.12.2018', 10633.82],
['DAX (EDE)', '27.12.2018', 10381.51], ['DAX (EDE)', '28.12.2018', 10558.96],
['DAX (EDE)', '02.01.2019', 10580.19], ['DAX (EDE)', '03.01.2019', 10416.66],
['DAX (EDE)', '04.01.2019', 10767.69], ['DAX (EDE)', '07.01.2019', 10747.81],
['DAX (EDE)', '08.01.2019', 10803.98], ['DAX (EDE)', '09.01.2019', 10893.32],
['DAX (EDE)', '10.01.2019', 10921.59], ['DAX (EDE)', '11.01.2019', 10887.46],
['DAX (EDE)', '14.01.2019', 10855.91], ['DAX (EDE)', '15.01.2019', 10891.79],
['DAX (EDE)', '16.01.2019', 10931.24], ['DAX (EDE)', '17.01.2019', 10918.62]]

In dieser Liste soll das Maximum gefunden werden und in dieser Form ausgegeben werden: ['DAX (EDE)', '16.01.2019', 10931.24].
Wer kann helfen?

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 21:51
von Sirius3
Was hast Du schon versucht?

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 21:54
von reddy
liste = [['DAX (EDE)', '20.12.2018', 10611.1], ['DAX (EDE)', '21.12.2018', 10633.82],
['DAX (EDE)', '27.12.2018', 10381.51], ['DAX (EDE)', '28.12.2018', 10558.96],
['DAX (EDE)', '02.01.2019', 10580.19], ['DAX (EDE)', '03.01.2019', 10416.66],
['DAX (EDE)', '04.01.2019', 10767.69], ['DAX (EDE)', '07.01.2019', 10747.81],
['DAX (EDE)', '08.01.2019', 10803.98], ['DAX (EDE)', '09.01.2019', 10893.32],
['DAX (EDE)', '10.01.2019', 10921.59], ['DAX (EDE)', '11.01.2019', 10887.46],
['DAX (EDE)', '14.01.2019', 10855.91], ['DAX (EDE)', '15.01.2019', 10891.79],
['DAX (EDE)', '16.01.2019', 10931.24], ['DAX (EDE)', '17.01.2019', 10918.62]]

liste_nur_kurs = [kurs for name, datum, kurs in liste]
Maximum = max(liste_nur_kurs)
print(liste_nur_kurs)
print("Maxumum = ", Maximum)

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 22:01
von reddy
Und:

import numpy as np

liste = [['DAX (EDE)', '20.12.2018', 10611.1], ['DAX (EDE)', '21.12.2018', 10633.82],
['DAX (EDE)', '27.12.2018', 10381.51], ['DAX (EDE)', '28.12.2018', 10558.96],
['DAX (EDE)', '02.01.2019', 10580.19], ['DAX (EDE)', '03.01.2019', 10416.66],
['DAX (EDE)', '04.01.2019', 10767.69], ['DAX (EDE)', '07.01.2019', 10747.81],
['DAX (EDE)', '08.01.2019', 10803.98], ['DAX (EDE)', '09.01.2019', 10893.32],
['DAX (EDE)', '10.01.2019', 10921.59], ['DAX (EDE)', '11.01.2019', 10887.46],
['DAX (EDE)', '14.01.2019', 10855.91], ['DAX (EDE)', '15.01.2019', 10891.79],
['DAX (EDE)', '16.01.2019', 10931.24], ['DAX (EDE)', '17.01.2019', 10918.62]]

np_liste = np.array(liste)

print(np_liste)

Aber das Programm macht aus float wieder string...

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 22:10
von __blackjack__
@reddy: Und was gefällt Dir nun am Ergebnis der ersten Variante nicht?

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 22:30
von reddy
Ich brauche als Antwort: ['DAX (EDE)', '16.01.2019', 10931.24].

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 22:33
von reddy
Das Datum ist wichtig, weil ich den Dax seit 1980 in 17-Handelstagen auswerte.
Das Ergebnis möchte ich dann in einer anderen Liste speichern und dann die Werte mit dem gleichen Datum zählen.
So ergeben sich lokale Hochs beim Dax (vermute ich).

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Samstag 19. Januar 2019, 22:35
von __blackjack__
@reddy: Dann erstelle keine zusätzliche Liste sondern wende `max()` auf die Originale Liste mit einer passenden Funktion als Argument für `key` an. Entweder ein ``lambda``-Ausdruck, oder Du erstellst die mit `operator.itemgetter()`.

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Sonntag 20. Januar 2019, 16:29
von reddy
Daran habe ich gar nicht gedacht! :-)
Wenn man die Liste mit itemgetter sortiert, ist der erste Element gleichzeitig der mit dem Maximumwert.

import numpy as np
from operator import itemgetter
liste = [['DAX (EDE)', '20.12.2018', 10611.1], ['DAX (EDE)', '21.12.2018', 10633.82],
['DAX (EDE)', '27.12.2018', 10381.51], ['DAX (EDE)', '28.12.2018', 10558.96],
['DAX (EDE)', '02.01.2019', 10580.19], ['DAX (EDE)', '03.01.2019', 10416.66],
['DAX (EDE)', '04.01.2019', 10767.69], ['DAX (EDE)', '07.01.2019', 10747.81],
['DAX (EDE)', '08.01.2019', 10803.98], ['DAX (EDE)', '09.01.2019', 10893.32],
['DAX (EDE)', '10.01.2019', 10921.59], ['DAX (EDE)', '11.01.2019', 10887.46],
['DAX (EDE)', '14.01.2019', 10855.91], ['DAX (EDE)', '15.01.2019', 10891.79],
['DAX (EDE)', '16.01.2019', 10931.24], ['DAX (EDE)', '17.01.2019', 10918.62]]


liste.sort(key=itemgetter(2), reverse=True)

print(liste[0])


VIELEN DANK!

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Sonntag 20. Januar 2019, 16:40
von Sirius3
Wenn Du nur das Maximum willst, ist sortieren etwas zu viel. `max` kennt auch ein key-Argument.

Re: Maximum in einer Liste finden und ausgeben

Verfasst: Sonntag 20. Januar 2019, 17:32
von reddy
liste = [['DAX (EDE)', '20.12.2018', 10611.1], ['DAX (EDE)', '21.12.2018', 10633.82],
['DAX (EDE)', '27.12.2018', 10381.51], ['DAX (EDE)', '28.12.2018', 10558.96],
['DAX (EDE)', '02.01.2019', 10580.19], ['DAX (EDE)', '03.01.2019', 10416.66],
['DAX (EDE)', '04.01.2019', 10767.69], ['DAX (EDE)', '07.01.2019', 10747.81],
['DAX (EDE)', '08.01.2019', 10803.98], ['DAX (EDE)', '09.01.2019', 10893.32],
['DAX (EDE)', '10.01.2019', 10921.59], ['DAX (EDE)', '11.01.2019', 10887.46],
['DAX (EDE)', '14.01.2019', 10855.91], ['DAX (EDE)', '15.01.2019', 10891.79],
['DAX (EDE)', '16.01.2019', 10931.24], ['DAX (EDE)', '17.01.2019', 10918.62]]

x = max(liste, key=lambda x:x[2])
print(x)

Das habe ich gesucht! Danke schön für die Ideen!