2010-01-09 69 views
6

我想了解如何獲取在特定列表中保存的每個列表的長度。例如:Python在子列表中查找列表長度

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(a[0][:]) 

這將輸出我想要的答案是長度[5,4,3]列表。這個命令顯然不起作用,我嘗試過的其他幾個也不行。請幫忙!

+0

一個作品是否有可能在[0]裏面的列表是否也包含列表? – danben 2010-01-09 00:58:44

回答

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

根據您的a [0]的大小,您可能希望選擇使用地圖的Matthew Iselin的解決方案。在某些情況下(不需要拉姆達),地圖可能會稍微快一些。但那隻會是一個非常大的[0] – sberry 2010-01-09 01:06:25

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

這被稱爲List comprehension(點擊瞭解更多信息和說明)。

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

map(len, a[0])

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

現在,只需撥打lens(a[0]),而不是你想要的len(a[0][:])(你可以,如果你堅持,添加冗餘[:],但是這只是在做一個副本,沒有目的任何 - 浪費不可;-)。

1

使用通常的「老派」的方式

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

馬修的答案在Python 3不起作用以下兩個的Python 2和Python 3

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