Rebanar lista de listas en Python

Necesito cortar una lista de listas en python.

A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] idx = slice(0,4) B = A[:][idx] 

El código de arriba no me está dando la salida correcta.

Lo que quiero es: [[1,2,3],[1,2,3],[1,2,3]]

Con numpy es muy simple, solo puedes realizar el corte:

 In [1]: import numpy as np In [2]: A = np.array([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]) In [3]: A[:,:3] Out[3]: array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) 

Podría, por supuesto, transformar numpy.array nuevo a la list :

 In [4]: A[:,:3].tolist() Out[4]: [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 

Muy raramente, usar objetos de corte es más fácil de leer que emplear una comprensión de lista, y este no es uno de esos casos.

 >>> A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] >>> [sublist[:3] for sublist in A] [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 

Esto es muy claro. Para cada sub-lista en A , dame la lista de los primeros cuatro elementos.

puede usar una lista de comprensión como: [x[0:i] for x in A] donde i es 1,2,3, etc., según la cantidad de elementos que necesite.

Ya sea:

 >>> [a[slice(0,3)] for a in A] [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 

O:

 >>> [list(filter(lambda x: x<=3, a)) for a in A] [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 
 A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] print [a[:3] for a in A] 

Usando la lista de comprensión