Python: cambio porcentual máximo de elementos consecutivos

A veces, mientras trabajamos con listas de Python, podemos tener un problema en el que necesitamos extraer el máximo cambio de elementos consecutivos. Este tipo de problema puede tener aplicación en dominios como Data Science. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [4, 6, 7]
Salida : 50.0

Entrada : test_list = [7, 7, 7, 7]
Salida : 0.0

Método #1: Usar loop + zip()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, combinamos elementos con su elemento sucesivo usando zip(). El bucle se utiliza para realizar cálculos en forma bruta.

# Python3 code to demonstrate working of 
# Maximum consecutive elements percentage change
# Using zip() + loop
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Maximum consecutive elements percentage change
# Using zip() + loop
res = 0
for x, y in zip(test_list, test_list[1:]):
    res = max((abs(x - y) / x) * 100, res)
  
# printing result 
print("The maximum percentage change : " + str(res)) 
Producción :

The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The maximum percentage change : 300.0

Método #2: Usar recursividad +max()
Esta es otra forma más en la que se puede realizar esta tarea. En este, en lugar de bucle, realizamos esta tarea utilizando la recursividad, el seguimiento máximo en cada llamada.

# Python3 code to demonstrate working of 
# Maximum consecutive elements percentage change
# Using zip() + loop
  
# helpr_fnc
def get_max_diff(test_list, curr_max = None):
    pot_max = (abs(test_list[1] - test_list[0]) / test_list[0]) * 100
    if curr_max :
        pot_max = max(curr_max, pot_max)
    if len(test_list) == 2:
        return pot_max
    return get_max_diff(test_list[1:], pot_max)
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Maximum consecutive elements percentage change
# Using zip() + loop
res = get_max_diff(test_list)
  
# printing result 
print("The maximum percentage change : " + str(res)) 
Producción :

The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The maximum percentage change : 300.0

Publicación traducida automáticamente

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