>>> a = [1, 2, [3, 4], 5]
>>> print(len(a))
4
列表的长度是4,为什么元素数为4而不是5?
答案 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)
的一个元素。