2010-01-09 48 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]))

相关问题