count包含列表的元素数量,列表也包含列表

时间:2014-12-27 15:15:06

标签: python list element

>>> a = [1, 2, [3, 4], 5]
>>> print(len(a))
4

列表的长度是4,为什么元素数为4而不是5?

3 个答案:

答案 0 :(得分:5)

外部列表中的元素数为4. a[2] 一个对象。这里一个对象也是一个列表并不重要。

如果您需要递归计算元素的数量,请自行完成:

def recursive_element_count(ob):
    if isinstance(ob, list):
        return sum(recursive_element_count(elem) for elem in ob)
    # anything that isn't a list counts as one element
    return 1

演示:

>>> def recursive_element_count(ob):
...     if isinstance(ob, list):
...         return sum(recursive_element_count(elem) for elem in ob)
...     return 1
... 
>>> a = [1, 2, [3, 4], 5]
>>> recursive_element_count(a)
5

答案 1 :(得分:1)

当内部列表假定为一个对象时,len返回4。您可以使用以下代码计算所有元素的长度:

>>> a = [1, 2, [3, 4], 5]
>>> sum(len(i) if isinstance(i,list) else 1 for i in a)
5

isinstance()函数用于检查对象的类型。

答案 2 :(得分:1)

你知道数学集吗?这在Python中类似,在list-tuples-sets等中如果列表中有列表或元组中的元组等,则它们是一个元素。

a=[1,2,3]
b=[2,3]
a.append(b)
print (a)
print (len(a))

输出:

>>> 
[1, 2, 3, [2, 3]]
4
>>> 

那是因为 len(a)= 4 。 [2,3]是list(a)的一个元素。