Lambda函数获取嵌套列表中所有列表的长度总和?

时间:2018-05-08 13:52:57

标签: python lambda

get_total_length([[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]])

我是lambda函数的新手。如何使lambda函数获得嵌套列表中列表长度的总和。对于上面提到的例子,结果应该是10。

2 个答案:

答案 0 :(得分:3)

在生成器表达式中,计算每个子列表的len,然后将其传递到sum函数。

>>> values = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
>>> sum(len(i) for i in values)
10

作为lambda函数

>>> get_total_length = lambda values: sum(len(i) for i in values)
>>> get_total_length([[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]])
10

答案 1 :(得分:0)

您可以使用lambda函数的递归来查找嵌套结构的长度:

data = [[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]], [[[[[[[1]]]]]]]]
full_length = lambda x:sum(1 if not isinstance(i, list) else full_length(i) for i in x)
print(list(map(full_length, data)))

输出:

[10, 1]