Dividir una lista en trozos de tamaño N en Python

En este artículo, cubriremos cómo dividimos una lista en partes de tamaño uniforme en Python .

A continuación se muestran los métodos que cubriremos: 

Método 1: dividir una lista en partes de tamaño N en Python usando la palabra clave yield

La palabra clave yield permite que una función vuelva donde se quedó cuando se vuelve a llamar. Esta es la diferencia crítica de una función regular. Una función regular no puede volver donde la dejó. La palabra clave yield ayuda a una función a recordar su estado. El rendimiento permite que una función se suspenda y reanude mientras entrega un valor en el momento de la suspensión de la ejecución. 

Python3

my_list = ['geeks', 'for', 'geeks', 'like',
           'geeky','nerdy', 'geek', 'love',
               'questions','words', 'life']
 
# Yield successive n-sized
# chunks from l.
def divide_chunks(l, n):
     
    # looping till length l
    for i in range(0, len(l), n):
        yield l[i:i + n]
 
# How many elements each
# list should have
n = 5
 
x = list(divide_chunks(my_list, n))
print (x)

Producción:

[['geeks', 'for', 'geeks', 'like', 'geeky'], 
 ['nerdy', 'geek', 'love', 'questions', 'words'], 
 ['life']]

Método 2: dividir una lista en partes de tamaño N en Python usando un bucle

En este ejemplo, estamos usando un bucle en python y un corte de lista que nos ayudará a dividir una lista en partes.

Python3

my_list = [1, 2, 3, 4, 5,
           6, 7, 8, 9]
start = 0
end = 12
step = 3
for i in range(start, end, step):
    x = i
    print(my_list[x:x+step])

Producción:

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

Método 2: dividir una lista en partes de tamaño N en Python usando la comprensión de listas 

Es una forma elegante de dividir una lista en una línea de código para dividir una lista en varias listas en Python.

Python3

my_list = [1, 2, 3, 4, 5,
              6, 7, 8, 9]
 
# How many elements each
# list should have
n = 4
 
# using list comprehension
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )]
print (final)

Producción:

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

Implementación alternativa: 

Python3

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  
# How many elements each
# list should have
n = 4
  
# using list comprehension
x = [l[i:i + n] for i in range(0, len(l), n)]
print(x)

Producción:

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

Método 3: dividir una lista en partes de tamaño N en Python usando Numpy

Aquí, estamos usando un Numpy.array_split , un NumPy divide la array en trozos de tamaño n en tamaños iguales.

Python3

import numpy as np
 
arr = range(25)
np.array_split(arr, 5)

Producción:

[array([0, 1, 2, 3, 4]),
 array([5, 6, 7, 8, 9]),
 array([10, 11, 12, 13, 14]),
 array([15, 16, 17, 18, 19]),
 array([20, 21, 22, 23, 24])]

Método 5: dividir una lista en partes de tamaño N en Python usando itertool

En este ejemplo, usaremos itertool para dividir cada array en el mismo tamaño. estamos pasando un parámetro en el rango de 30 y tamaño dividido de 5.

Python3

from itertools import islice
 
 
def chunk(arr_range, arr_size):
    arr_range = iter(arr_range)
    return iter(lambda: tuple(islice(arr_range, arr_size)), ())
 
 
list(chunk(range(30), 5))

Producción:

[(0, 1, 2, 3, 4),
 (5, 6, 7, 8, 9),
 (10, 11, 12, 13, 14),
 (15, 16, 17, 18, 19),
 (20, 21, 22, 23, 24),
 (25, 26, 27, 28, 29)]

Publicación traducida automáticamente

Artículo escrito por Shantanu Sharma. 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 *