2010-01-09 25 views
6

Estoy tratando de averiguar cómo obtener la longitud de cada lista que se mantiene dentro de una lista en particular. Por ejemplo:Python encuentra longitudes de lista en una sublista

a = [] 
a.append([]) 
a[0].append([1,2,3,4,5]) 
a[0].append([1,2,3,4]) 
a[0].append([1,2,3]) 

me gustaría ejecutar un comando como:

len(a[0][:]) 

la que emitiría la respuesta que yo quiero que es una lista de las longitudes [5,4,3]. Ese comando, obviamente, no funciona, y tampoco lo hacen otros pocos que he intentado. ¡Por favor ayuda!

+0

¿Es posible que una lista dentro de un [0] también contiene listas? – danben

Respuesta

17

[len(x) for x in a[0]]?

>>> a = [] 
>>> a.append([]) 
>>> a[0].append([1,2,3,4,5]) 
>>> a[0].append([1,2,3,4]) 
>>> a[0].append([1,2,3]) 
>>> [len(x) for x in a[0]] 
[5, 4, 3] 
+1

Dependiendo del tamaño de su a [0], es posible que desee optar por la solución de Matthew Iselin usando el mapa. En algunos casos (donde lambda no es necesario), el mapa puede ser marginalmente más rápido. Pero eso sería solo para un muy grande a [0] – sberry

3
[len(x) for x in a[0]] 
3

Esto se conoce como List comprehension (haga clic para obtener más información y una descripción).

[len(l) for l in a[0]] 
8

map(len, a[0])

2
def lens(listoflists): 
    return [len(x) for x in listoflists] 

ahora, sólo llamar lens(a[0]) en lugar de su desear len(a[0][:]) (se puede, si se insiste, añaden que redundante [:], pero eso es sólo hacer una copia para ningún propósito que sea - no desperdicies, no quieras ;-).

1

usando la forma habitual "vieja escuela"

t=[] 
for item in a[0]: 
    t.append(len(item)) 
print t 
0

respuesta de Mateo no funciona en Python 3. El siguiente se trabaja tanto en Python 2 y Python 3

list(map(len, a[0]))

Cuestiones relacionadas