Esta es relativa a lo siguiente: (En el código Python)¿Cuándo debería usar un mapa en lugar de un bucle for?
for i in object:
doSomething(i)
frente
map(doSomething, object)
Ambos son fáciles de entender, y corto, pero ¿hay alguna diferencia de velocidad? Ahora, si doSomething tenía un valor de retorno, necesitábamos verificar que sería devuelto como una lista del mapa, y en el ciclo for podríamos crear nuestra propia lista o verificarla de a una por vez.
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
frente
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
Ahora, me siento los dos divergen un poco. Las dos funciones doSomethingWithReturnValue pueden ser diferentes en función de si las verificamos sobre la marcha a medida que avanzamos en el ciclo o si al verificarlas una vez al final se obtienen resultados diferentes. También parece que el bucle for siempre funcionaría, quizás más lentamente, donde el mapa solo funcionaría bajo ciertos escenarios. Por supuesto, podríamos hacer contorsiones para que cualquiera de los dos trabaje, pero el objetivo es evitar este tipo de trabajo.
Lo que estoy buscando es un escenario donde la función de mapeo realmente brilla en comparación con un ciclo bien hecho en cuanto a rendimiento, legibilidad, mantenibilidad o velocidad de implementación. Si la respuesta es que realmente no hay una gran diferencia, me gustaría saber cuándo en la práctica las personas usan una u otra o si es realmente completamente arbitraria y se establece mediante normas de codificación según su institución.
Gracias!
Puede usar la lista/diccionario/conjunto de comprensión o un generador en lugar de un mapa, depende de lo que haga algo(). –
no intente ajustar el rendimiento preliminar. siempre tomaría la mejor opción legible. el tiempo de ejecución posterior mostrará si el rendimiento destacado es un problema y usted tiene una mejor velocidad o uso de recursos. –