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:
- Usando el rendimiento
- Usando el bucle for en Python
- Uso de la comprensión de listas
- usando numpy
- Usando itertool
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