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.0Entrada : 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))
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))
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