Dada una lista, prueba t si es alternativa, es decir, los elementos siguientes y anteriores son más pequeños o más grandes en toda la lista.
Entrada : test_list = [2, 4, 1, 6, 4, 8, 0]
Salida : Verdadero
Explicación : 4, 6, 8 son alternas y picos (2 1).Entrada : test_list = [2, 4, 1, 6, 4, 1, 0]
Salida : Falso
Explicación : 1 no es pico (4 < 1 < 0).
Método #1: Usar loop .
En esto, verificamos para cada elemento los elementos siguientes y anteriores usando la declaración condicional if para que sea más pequeña o más grande, si se encuentra alguna variación, el resultado se marca como falso y se sale del ciclo.
Python3
# Python3 code to demonstrate working of # Test for alternate peak List # Using loop # initializing list test_list = [2, 4, 1, 6, 4, 8, 0] # printing original list print("The original list is : " + str(test_list)) res = True for idx in range(1, len(test_list) - 1): # breaking if not alternate peaks if not ((test_list[idx - 1] < test_list[idx] and test_list[idx + 1] < test_list[idx]) or (test_list[idx - 1] > test_list[idx] and test_list[idx + 1] > test_list[idx])): res = False # printing result print("Is list forming alternate peaks ? : " + str(res))
Producción:
The original list is : [2, 4, 1, 6, 4, 8, 0] Is list forming alternate peaks ? : True
Método #2: Usando all() + generador de expresión .
En esto, realizamos la tarea de verificar todos los elementos para obtener picos alternativos usando all(), y la expresión del generador se usa para recorrer toda la lista.
Python3
# Python3 code to demonstrate working of # Test for alternate peak List # Using all() + generator expression # initializing list test_list = [2, 4, 1, 6, 4, 8, 0] # printing original list print("The original list is : " + str(test_list)) # checking for all the elements for alternate peaks # one liner solution to problem res = all(((test_list[idx - 1] < test_list[idx] and test_list[idx + 1] < test_list[idx]) or (test_list[idx - 1] > test_list[idx] and test_list[idx + 1] > test_list[idx])) for idx in range(1, len(test_list) - 1)) # printing result print("Is list forming alternate peaks ? : " + str(res))
Producción:
The original list is : [2, 4, 1, 6, 4, 8, 0] Is list forming alternate peaks ? : True
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