Corte de python | Invertir una array en grupos de tamaño dado

Dada una array, invierta cada sub-array formada por k elementos consecutivos.

Ejemplos:

Input: 
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
k = 3
Output:  
[3, 2, 1, 6, 5, 4, 9, 8, 7]

Input: 
arr = [1, 2, 3, 4, 5, 6, 7, 8]
k = 5
Output:  
[5, 4, 3, 2, 1, 8, 7, 6]

Input: 
arr = [1, 2, 3, 4, 5, 6]
k = 1
Output:  
[1, 2, 3, 4, 5, 6]

Input: 
arr = [1, 2, 3, 4, 5, 6, 7, 8]
k = 10
Output:  
[8, 7, 6, 5, 4, 3, 2, 1]

Tenemos una solución existente para este problema, consulte Invierta una array en grupos de enlace de tamaño dado. Podemos resolver este problema rápidamente en Python usando el corte de listas y la función invertida(). El siguiente ejemplo le dará una mejor comprensión del enfoque.

Ejemplo:
Example

# function to Reverse an array in groups of given size
  
def reverseGroup(input,k):
  
    # set starting index at 0
    start = 0
  
    # run a while loop len(input)/k times
    # because there will be len(input)/k number 
    # of groups of size k 
    result = []
    while (start<len(input)):
  
           # if length of group is less than k
           # that means we are left with only last 
           # group reverse remaining elements 
           if len(input[start:])<k:
                result = result + list(reversed(input[start:]))
                break
  
           # select current group of size of k
           # reverse it and concatenate 
           result = result + list(reversed(input[start:start + k]))
           start = start + k
    print(result)
  
# Driver program
if __name__ == "__main__":
    input = [1, 2, 3, 4, 5, 6, 7, 8]
    k = 5
    reverseGroup(input,k)
Producción:

[5, 4, 3, 2, 1, 8, 7, 6]

Uso de la función directa

# function to Reverse an array in groups of given size
   
def reverseGroup(a, k):
  
   # take an empty list
   res = []
  
   # iterate over the list with increment of 
   # k times in each iteration
   for i in range(0, len(a), k):
       
       # reverse the list in each iteration over 
       # span of k elements using extend
       res.extend((a[i:i + k])[::-1])
   print(res)
   
# Driver program
if __name__ == "__main__":
    input = [1, 2, 3, 4, 5, 6, 7, 8]
    k = 5
    reverseGroup(input, k)
Producción:

[5, 4, 3, 2, 1, 8, 7, 6]

Publicación traducida automáticamente

Artículo escrito por Shashank Mishra 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 *