die x grössten und kleinsten Werte aus Liste entfernen
Verfasst: Mittwoch 3. April 2019, 20:55
Hallo zusammen,
habe aktuell folgendes Problem.
Ich hab 2 Listen. Die erste Liste enthält Kontostände. Also zum Beispiel so:
[500, 700, 800, 650, 1000, 1500, 2400, 1750, 1800, 1900]
Daraus generiere ich eine zweite Liste, welche gemäss der Kontostandsliste den Gewinn/Verlust ermittelt, also wäre das so:
[500, 200, 100, -150, 350, 500, 900, -650, 50, 100]
Nun möchte ich die x (am besten beliebig einstellbar via Input zum Beispiel) grössten und kleinsten Werte aus der Gewinn/Verlust Liste entfernen und entsprechend eine korrekte, neue Kontostandsliste bauen.
Nun, wenn man für x einen festen Wert annimmt, dann hab ich eine (ziemlich) unelegante Lösung.
Mal angenommen, man nimmt für x = 2 an, dann lass ich 2 mal folgende Schleife für die max-Werte laufen, dann noch 2 mal für die Min werte, und dann bastel ich daraus eine neue Kontostandsliste. Das kommt mir aber maximal umständlich vor und es ist wie gesagt nicht dynamisch für x.
Hat mir jemand eine elegante Lösung für das Problem mit dynamisch möglichem x?
Gruss
habe aktuell folgendes Problem.
Ich hab 2 Listen. Die erste Liste enthält Kontostände. Also zum Beispiel so:
[500, 700, 800, 650, 1000, 1500, 2400, 1750, 1800, 1900]
Daraus generiere ich eine zweite Liste, welche gemäss der Kontostandsliste den Gewinn/Verlust ermittelt, also wäre das so:
[500, 200, 100, -150, 350, 500, 900, -650, 50, 100]
Nun möchte ich die x (am besten beliebig einstellbar via Input zum Beispiel) grössten und kleinsten Werte aus der Gewinn/Verlust Liste entfernen und entsprechend eine korrekte, neue Kontostandsliste bauen.
Nun, wenn man für x einen festen Wert annimmt, dann hab ich eine (ziemlich) unelegante Lösung.
Mal angenommen, man nimmt für x = 2 an, dann lass ich 2 mal folgende Schleife für die max-Werte laufen, dann noch 2 mal für die Min werte, und dann bastel ich daraus eine neue Kontostandsliste. Das kommt mir aber maximal umständlich vor und es ist wie gesagt nicht dynamisch für x.
Code: Alles auswählen
#max-werte entfernen
for c in range(0,len(list_gewinn_verlust)):
if list_gewinn_verlust[c] == max(list_gewinn_verlust):
list_gewinn_verlust.pop(c)
break
for c in range(0,len(list_gewinn_verlust)):
if list_gewinn_verlust[c] == max(list_gewinn_verlust):
list_gewinn_verlust.pop(c)
break
#min-werte entfernen
for c in range(0,len(list_gewinn_verlust)):
if list_gewinn_verlust[c] == min(list_gewinn_verlust):
list_gewinn_verlust.pop(c)
break
for c in range(0,len(list_gewinn_verlust)):
if list_gewinn_verlust[c] == min(list_gewinn_verlust):
list_gewinn_verlust.pop(c)
break
Gruss