Dies wird in Bezug auf die folgenden: (In Python-Code)Wann sollte ich anstelle einer For-Schleife eine Map verwenden?
for i in object:
doSomething(i)
gegen
map(doSomething, object)
Beide sind leicht zu verstehen, und kurz, aber gibt es eine Geschwindigkeitsdifferenz? Nun, wenn doSomething einen Rückgabewert hatte, mussten wir überprüfen, ob es als Liste von der Karte zurückgegeben würde, und in der for-Schleife konnten wir entweder unsere eigene Liste erstellen oder einzeln prüfen.
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
gegen
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
Jetzt fühle ich die beiden ein wenig auseinander. Die beiden doSomethingWithReturnValue-Funktionen können sich unterscheiden, je nachdem, ob sie während des Durchlaufens der Schleife im laufenden Betrieb überprüft werden oder ob alle Prüfungen gleichzeitig am Ende zu unterschiedlichen Ergebnissen führen. Es scheint auch, dass die for-Schleife immer funktioniert, vielleicht langsamer, wo die Karte nur in bestimmten Szenarien funktionieren würde. Natürlich könnten wir Verrenkungen machen, um beide Arbeiten zu machen, aber das Wichtigste ist, diese Art von Arbeit zu vermeiden.
Was ich suche ist ein Szenario, in dem die Mapping-Funktion wirklich im Vergleich zu einem gut für Loop in Leistung, Lesbarkeit, Wartbarkeit oder Geschwindigkeit der Implementierung. Wenn die Antwort darin besteht, ist wirklich kein großer Unterschied, dann würde ich gerne wissen, wann in der Praxis Leute das eine oder das andere verwenden, oder wenn es wirklich völlig willkürlich ist und durch Codierungsstandards eingestellt wird, die von Ihrer Institution abhängen.
Danke!
Sie können Liste/Wörterbuch/Satz Verständnis oder einen Generator anstelle einer Karte verwenden - hängt davon ab, was die DoSomething() tut. –
nicht versuchen, Leistung vorläufig zu optimieren. Ich würde immer die beste lesbare Option nehmen. Die Laufzeit wird später angezeigt, wenn die showstopper-Leistung ein Problem ist und Sie die Geschwindigkeit oder die Ressourcennutzung verbessern. –