Digamos que tengo una lista de longitud arbitraria, L:forma alternativa de dividir una lista en grupos de n
L = list(range(1000))
¿Cuál es la mejor manera de dividir la lista en grupos de n
? Esta es la mejor estructura que he sido capaz de llegar a, y por alguna razón no se siente como que es la mejor manera de llevar a cabo la tarea:
n = 25
for i in range(0, len(L), n):
chunk = L[i:i+25]
¿Hay un built-in para hacer esto ¿Estoy perdido?
Edit: Las primeras respuestas están volviendo a trabajar mi bucle for en un listcomp, que no es la idea; básicamente me estás devolviendo mi respuesta exacta en una forma diferente. Estoy viendo si hay un medio alternativo para lograr esto, como un hipotético .split
en las listas o algo así. También hago utilizar esto como un generador de código que escribí anoche:
def split_list(L, n):
assert type(L) is list, "L is not a list"
for i in range(0, len(L), n):
yield L[i:i+n]
crear un generador para más Pythonic. Pero nosotros para mí, es el código normal :) – Oduvan
Puedes crear tu propia clase para almacenar una lista y codificarla allí, entonces tendrías un enfoque más directo ... pero dudo que cambie nada. Las listas no tienen una función .split(), al menos no en Python 2.x;) – kender
@Jurily Idiomías idiotónicas - http://stackoverflow.com/questions/58968/what-defines-pythonian-or-pythonic –