Programa de Python que imprime el recuento de picos o valles de una lista

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

Deja una respuesta

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