您好我正在尝试计算列表列表中的所有元素。 例如
a = [[1,2],[3,4],[10,3,8]]
我想回来:
7
我没有运气就尝试了数量和尺寸。 提前谢谢。
答案 0 :(得分:7)
a = [[1,2],[3,4],[10,3,8]]
print(sum(map(len, a)))
<强>输出强>
7
这可以写成生成器表达式,就像这个
print(sum(len(item) for item in a))
即使对于多级嵌套列表也能使用的最简单方法就像这样
def get_size(current_item):
if isinstance(current_item, list):
return sum(get_size(item) for item in current_item)
else:
return 1
a = [[1,2],[3,4],[10,3,8],[[1, 2, 3], [2, 3]]]
print get_size(a) # 12
答案 1 :(得分:1)
出于学术目的,如果您的列表超过一个级别(例如[ [1,2,3], [4,5,[6,7,8]]]
,其中一个元素包含一个列表),您将需要执行以下操作:
def count_elements(target):
count = 0
for element in target:
if type(element) is list:
count += count_elements(element)
else:
count += 1
return count
但OP所描述的问题更容易用其他答案解决。只是提到这些解决方案不易扩展。
答案 2 :(得分:0)
您可以将长度相加(例如@thefourtheye建议),或迭代所有元素,并计算:
sum(len(b) for b in a)
sum(1 for b in a for c in b)
第一种方式显然更好,但第二种方式很适合展示你可以用列表推导做的一些事情,并且还可以用于更通用的结构,可迭代的迭代(这样做)没有定义__len__
。
答案 3 :(得分:0)
def myLen(L):
if not L:
return 0
elif not isinstance(L[0], list):
return 1 + myLen(L[1:])
else:
return myLen(L[0]) + myLen(L[1:])
输出:
>>> myLen([[1,2],[3,4],[10,3,8]])
7
答案 4 :(得分:0)
list_count = 0
mainList = [[1,2],[3,4],[10,3,8]]
for inner_list in mainList:
list_count += len(inner_list)
print(list_count)
答案 5 :(得分:0)
您可以展平该列表,然后在展平的列表上使用len()
:
a = [[1,2,2,[3,4],[10,3,8]]
flattened_a = [子列表中某项的子列表中的项]
len(flattened_a)