Python – K Máximo consecutivo

Dada una Lista, encuentre el máximo de los siguientes K elementos de cada índice.

Entrada : test_list = [4, 3, 9, 2, 6, 12, 4, 3, 2, 4, 5], K = 4 Salida: [9, 9, 9, 12, 12, 12, 4,
5 ]
Explicación : Max de los siguientes 4 elementos, (max(4, 3, 9, 2) = 9)

Entrada : test_list = [4, 3, 9, 2, 6], K = 4
Salida : [9, 9]
Explicación : Máximo de los siguientes 4 elementos, (máx(4, 3, 9, 2) = 9)

Método #1: Usar loop + max() + rebanar

En esto, iteramos por elementos en bucle, cortando hasta el siguiente K, y usamos max() para obtener el máximo de ellos para el índice actual.

Python3

# Python3 code to demonstrate working of 
# K consecutive Maximum 
# Using max() + loop + slicing
  
# initializing list
test_list = [4, 3, 8, 2, 6, 7, 4, 3, 2, 4, 5]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 4
  
res = []
for idx in range(len(test_list) - K + 1):
      
    # slice next K and compute Maximum
    res.append(max(test_list[idx : idx + K]))
  
# printing result 
print("Next K Maximum List : " + str(res))
Producción

The original list is : [4, 3, 8, 2, 6, 7, 4, 3, 2, 4, 5]
Next K Maximum List : [8, 8, 8, 7, 7, 7, 4, 5]

Método #2: Usar la comprensión de listas

Esta es otra forma de resolver esta alternativa de una sola línea al método anterior utilizando la comprensión de listas.

Python3

# Python3 code to demonstrate working of 
# K consecutive Maximum 
# Using list comprehension
  
# initializing list
test_list = [4, 3, 8, 2, 6, 7, 4, 3, 2, 4, 5]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 4
  
# one-liner to solve problem
res = [max(test_list[idx : idx + K]) for idx in range(len(test_list) - K + 1)]
  
# printing result 
print("Next K Maximum List : " + str(res))
Producción

The original list is : [4, 3, 8, 2, 6, 7, 4, 3, 2, 4, 5]
Next K Maximum List : [8, 8, 8, 7, 7, 7, 4, 5]

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 *