Python | N números pares o impares consecutivos

El problema enfocado en este artículo es bastante específico y puede ser menos útil en diferentes dominios. Pero la forma en que esto se resolverá puede abrir puertas para resolver problemas potencialmente similares, por lo que vale la pena leerlo. Este artículo resuelve el problema de probar si una lista contiene una serie de elementos pares o impares. Analicemos ciertas formas en que se puede resolver este problema.

Método #1: Usar sum()+ comprensión de listas +zip() + any()

Este problema se puede resolver usando la combinación de las funciones anteriores. Este método resuelve el problema en 2 pasos. En el primer paso, calculamos todos los posibles pares de N usando la comprensión de lista y la función zip y en el segundo paso usamos la suma y cualquier función para probar el resultado divisible de N, si encontramos alguno de ellos, devolvemos positivo.

# Python3 code to demonstrate
# N consecutive Odd or Even Numbers
# using sum() + zip() + any() + list comprehension
  
# initializing list
test_list = [1, 5, 6, 4, 8]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N 
N = 3
  
# using sum() + zip() + any() + list comprehension
# N consecutive Odd or Even Numbers
temp = ( test_list[i : i + N] for i in range(len(test_list) - N + 1) )
res = any( sum(ele % 2 for ele in temps) % N == 0 for temps in temp )
  
# print result
print("Does list contain the desired consecution : " + str(res))
Producción :

The original list : [1, 5, 6, 4, 8]
Does list contain the desired consecution : True

Método #2: Usargroupby() + any()

Toda la lógica de hacer el 1er paso en el método anterior se puede administrar usando la función groupby en la que realizamos la agrupación y cualquier función se puede usar más tarde para verificar la consecución.

# Python3 code to demonstrate
# N consecutive Odd or Even Numbers
# using groupby() + any()
from itertools import groupby
  
# initializing list
test_list = [1, 5, 6, 4, 8]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N 
N = 3
  
# using groupby() + any()
# N consecutive Odd or Even Numbers
res = any(len(list(sub)) == N for idx, sub in
     groupby([sub % 2 for sub in test_list]))
  
# print result
print("Does list contain the desired consecution : " + str(res))
Producción :

The original list : [1, 5, 6, 4, 8]
Does list contain the desired consecution : 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

Deja una respuesta

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