Python列表计数元素列表

时间:2014-02-06 17:52:58

标签: python list

您好我正在尝试计算列表列表中的所有元素。 例如

a = [[1,2],[3,4],[10,3,8]]

我想回来:

7

我没有运气就尝试了数量和尺寸。 提前谢谢。

6 个答案:

答案 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)