Dada una lista, el siguiente artículo muestra formas de contar elementos que son pico (x > y < z) o valle (x < y > z).
Entrada : test_list = [1, 2, 4, 2, 6, 7, 8, 3]
Salida : 3
Explicación : (2, 4, 2), (4, 2, 6), (7, 8, 3) son picos y valles.
Entrada : test_list = [1, 2, 4, 5, 3, 2]
Salida : 1
Explicación : (4, 5, 3) es pico.
Método 1: Usar bucle
En esto, iteramos para cada elemento y verificamos si su elemento siguiente y anterior es más pequeño o más grande que el elemento actual. Si se encuentra, el contador se incrementa.
Python3
# initializing list test_list = [1, 2, 4, 2, 6, 7, 8, 3] # printing original list print("The original list is : " + str(test_list)) res = 0 for idx in range(1, len(test_list) - 1): if test_list[idx + 1] > test_list[idx] < test_list[idx - 1] or test_list[idx + 1] < test_list[idx] > test_list[idx - 1]: res += 1 # printing result print("Peaks and Valleys count : " + str(res))
Producción:
La lista original es: [1, 2, 4, 2, 6, 7, 8, 3]
Número de picos y valles: 3
Método 2: usar la comprensión de listas y len()
En esto, realizamos la tarea de obtener picos y valles usando la comprensión de listas y luego se usa len() para calcular el conteo exacto.
Python3
# initializing list test_list = [1, 2, 4, 2, 6, 7, 8, 3] # printing original list print("The original list is : " + str(test_list)) # one-liner alternative res = len([test_list[idx] for idx in range(1, len(test_list) - 1) if test_list[idx + 1] > test_list[idx] < test_list[idx - 1] or test_list[idx + 1] < test_list[idx] > test_list[idx - 1]]) # printing result print("Peaks and Valleys count : " + str(res))
Producción:
La lista original es: [1, 2, 4, 2, 6, 7, 8, 3]
Número de picos y valles: 3
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