Desempaquetando argumentos en Python

Si ha usado Python incluso durante unos días, probablemente sepa cómo desempaquetar tuplas. Bueno, para empezar, puede desempaquetar tuplas o listas para separar variables, pero eso no es todo. Hay mucho más para desempaquetar en Python.

Desempaquetar sin almacenar los valores: es posible que se encuentre con una situación en la que no necesite todos los valores de una tupla pero desee almacenar solo algunos de ellos. En ese caso, puede usar un _ para ignorar ciertos valores. Ahora, combinémoslo con la implementación anterior *

Ejemplo 1:

Python3

# unpacking python tuple using _ 
  
# first and last value will be ignored 
# and won't be stored second will be 
# assigned to b and remaining will be
# assigned to x 
_, b, *x, _ = ("I ", "love ", "Geeks ",
               "for ", "Geeks ", 3000) 
  
# print details 
print(b)
print(x) 

Producción:

love 
['Geeks ', 'for ', 'Geeks ']

Explicación:

Observe aquí que la primera y la última variable están configuradas para subrayar (_). En python, el guión bajo se usa para ignorar valores o descartar variables, lo que significa que «I» y 3000 no se almacenarán.

Ejemplo 2:

Python3

# unpacking python tuple using _* 
  
# first second and last value will be stored
# remaining will be ignored by using *_
a, b, *_, c = ("I ", "love ", "Geeks ",
               "for ", "Geeks ", 3000) 
  
# print details 
print(a)
print(b) 
print(c)

Producción:

I 
love 
3000

Explicación:

Observe aquí en a y b , se asignan el primer y segundo valor y en c , se asigna el último valor. Entonces, ¿qué pasa con el tercero, cuarto y quinto? Bueno, simplemente se ignoran porque hemos usado *_ . Si usamos * con una variable, entonces todos entrarían en esa variable como una lista. Desde entonces, hemos usado _ en lugar de una variable, por lo que la lista completa de palabras se ignora por completo. 

Ejemplo 3: Bueno, la idea aquí es crear una función que tome una lista de números y devuelva su suma, promedio, máximo y mínimo en la lista. Luego reutilizaremos la función para obtener lo que necesitamos para diferentes casos de uso.

Python3

def arithmetic_operations(arr: list):
  MAX = max(arr)
  MIN = min(arr)
  SUM = sum(arr)
  AVG = SUM/len(arr)
    
  return (SUM, AVG, MAX, MIN)
  
if __name__ == '__main__':
  arr = [5, 8, 9, 12, 50, 3, 1]
    
  # for all data
  sum_arr, avg_arr, max_arr, min_arr = arithmetic_operations(arr)
  print("CASE 1 ", sum_arr, avg_arr, max_arr, min_arr)
    
  #for only avg and max
  _, avg_arr, max_arr, _ = arithmetic_operations(arr)
  print("CASE 2 ", avg_arr, max_arr)
    
  # for only sum and min
  sum_arr, *_, min_arr = arithmetic_operations(arr)
  print("CASE 3 ", sum_arr, min_arr)

Producción:

CASE 1  88 12.571428571428571 50 1
CASE 2  12.571428571428571 50
CASE 3  88 1

El código anterior es para demostrar cómo puede tener una función que devuelva múltiples valores pero use solo los necesarios a la vez sin desperdiciar memoria.

Publicación traducida automáticamente

Artículo escrito por debdutgoswami 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 *