Python – Comprensión de mapa vs lista

Supongamos que tenemos una función y queremos calcular esta función para diferentes valores en una sola línea de código. ¡ Aquí es donde la función map() juega su papel! map()La función devuelve un objeto de mapa (que es un iterador) de los resultados después de aplicar la función dada a cada elemento de un iterable dado (lista, tupla, etc.)

Sintaxis: map(funcname, iterables)

Parámetros:

funcname: Es el nombre de la función que ya está definida y se va a ejecutar para cada ítem.
iterables: Puede ser lista, tuplas o cualquier otro objeto iterable.

Tipo de devolución: devuelve un objeto de mapa después de aplicar la función dada a cada elemento de un iterable dado (lista, tupla, etc.)

Ejemplo:

# function to double the number
def num (n) :
    return n * 2
          
lst = [2, 44, 5.5, 6, -7]
  
# suppose we want to call function
# 'num' for each element of lst,
# we use map
  
# creates a map object
x = map(num, lst) 
print(x) 
  
# returns list
print(list(x))  

Producción:

<map object at 0x7f859f3f05c0>
[4, 88, 11.0, 12, -14]

Nota: Para obtener más información, consulte la función map() de Python .

La comprensión de listas es un sustituto de la función lambda, map(), filter()y reduce(). Sigue la forma de la notación matemática del constructor de conjuntos. Proporciona una forma concisa de crear listas.

Sintaxis:

[ expression for item in list if conditional ]

Parámetros:

  • Expresión – basada en la variable utilizada para cada elemento
  • for ..in – ‘for’ seguido del nombre de la variable a usar, seguido de ‘in’
  • si – para filtrar

Ejemplo:

lst = [2, 44, 5.5, 6, -7]
  
# to double the number
# list comprehension
x = [i * 2 for i in lst ] 
print(x)

Producción:

[4, 88, 11.0, 12, -14]

Nota: Para obtener más información, consulte Comprensión y segmentación de listas de Python .

Mapa VS Lista de comprensión

  • La comprensión de la lista es más concisa y fácil de leer en comparación con el mapa.
  • La comprensión de listas permite filtrar. En el mapa, no tenemos tal instalación. Por ejemplo, para imprimir todos los números pares en el rango de 100, podemos escribir [n for n in range(100) if n%2 == 0]. No hay alternativa para ello en el mapa.
  • La comprensión de lista se usa cuando se requiere una lista de resultados, ya que el mapa solo devuelve un objeto de mapa y no devuelve ninguna lista.
  • La comprensión de listas es más rápida que el mapa cuando necesitamos evaluar expresiones que son demasiado largas o complicadas de expresar.
  • El mapa es más rápido en caso de llamar a una función ya definida (ya que no se requiere lambda).
  • Comparación del tiempo de ejecución

    Nota: Usaremos una biblioteca de python incorporada ‘ timeit‘.

    • sin lambda

      Tomemos una operación simple para imprimir un número en un rango dado. Realizamos esta operación utilizando tanto el mapa como la lista de comprensión uno por uno.


      Del ejemplo anterior, podemos concluir que el mapa funciona mejor que la comprensión de listas cuando una función ya está definida.

    • Con lambda en el mapa
      Tomemos operaciones en las que necesitamos una lambda dentro del mapa(). La primera operación es sumar 2 a cada número en el rango dado. La segunda operación es elevar al cuadrado cada número en el rango dado.

      Del código anterior, podemos observar que el mapa aún funciona mejor que la comprensión de listas.

      Nota: Hay casos en los que la comprensión de listas puede funcionar mejor que el mapa donde las expresiones son demasiado largas y complejas.

Publicación traducida automáticamente

Artículo escrito por akritigoswami y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *