Summe von ungeraden Elemente einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nuhakan
User
Beiträge: 51
Registriert: Donnerstag 11. August 2016, 11:42

Hallo,

ich versuche diesen Code zu verbessern. So wie das ist, funktioniert nicht, weil man am Ende für manche "condicion" ein Element abziehen soll. Dann hatte ich die Idee für die if-Bedingung ein Element im Voraus zu addieren.

Code: Alles auswählen

lista = [33, 42, 10, 13, 19, 82, 32, 14, 17, 29, 19, 24, 4, 79, 33, 13, 38, 6]

condicion = 89
resultado = []

for elemento in lista[::2]:

#    rel_2 = sum(resultado) + elemento
#    if rel_2 >= condicion:

    if sum(resultado) >= condicion:
        break
    else:
        resultado.append(elemento)

print(sum(resultado[:-1]))
Danke!
Sirius3
User
Beiträge: 18255
Registriert: Sonntag 21. Oktober 2012, 17:20

Dass man nur jedes zweite Element aus lista benutzt, ist doch für die Frage gar nicht relevant. Statt jeweils die Summe über die komplette Liste resultado zu bilden, addiere doch einfach die Zahlen direkt auf.

Code: Alles auswählen

lista = [33, 42, 10, 13, 19, 82, 32, 14, 17, 29, 19, 24, 4, 79, 33, 13, 38, 6]

condicion = 89
resultado = 0
for elemento in lista[::2]:
    if resultado + elemento >= condicion:
        break
    resultado += elemento

print(resultado)
Benutzeravatar
__blackjack__
User
Beiträge: 14013
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Alternative:

Code: Alles auswählen

from itertools import accumulate, islice, takewhile

from more_itertools import last

lista = [33, 42, 10, 13, 19, 82, 32, 14, 17, 29, 19, 24, 4, 79, 33, 13, 38, 6]

condicion = 89

print(
    last(
        takewhile(
            lambda elemento: elemento < condicion,
            accumulate(islice(lista, None, None, 2)),
        )
    )
)
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
nuhakan
User
Beiträge: 51
Registriert: Donnerstag 11. August 2016, 11:42

Ach! Sehr einfach. Warum habe ich mich auf die Liste fixiert?

Danke blackjack, sehr schön. Ich schaue mir mehr im Detail die Module.

Danke.
Antworten