Ich entschuldige mich für diese triviale Frage, aber ich kann keine Lösung finden. Ich brauche die folgende Liste zu erstellen:Wie schreibe ich ein Listenverständnis, ohne die Auswertung einer Funktion zu wiederholen?
for i in x:
if(f(i) < g(i)):
my_list.append(f(i)*g(i))
aber ich weiß nicht, wie es mit der Liste Verständnis zu tun, ohne die Berechnung der Funktionen f()
und g()
zu wiederholen. Ich möchte es vermeiden, weil sie rechenintensiv sind. So möchte ich nicht so etwas wie:
[f(i)*g(i) for i in x if f(i) < g(i)]
weil f(i)
und g(i)
berechnet zweimal bei jeder Iteration. Ich habe mich gefragt, ob es einen Weg gibt, irgendwo die Nummern f(i)
und g(i)
zu "speichern" und sie innerhalb des Listenverständnisses abzurufen.
um ... sehr einfach ... etwas Variablen das Ergebnis von 'g (i) speichern' und 'f (i)'? –
Nun, ich möchte auch sagen, dass ich keine andere for-Schleife für die Erstellung einer Liste verwenden möchte, die f (i) und g (i) enthält, weil x sehr groß ist (daher würde diese Lösung sehr zeitaufwendig sein) – user2983638
Sie müssen keine zusätzliche Liste erstellen. Sieh meine Antwort. Es ist nur so, dass Sie Ihre Zwischenwerte nicht wegwerfen müssen –