添加列表列表的元素

时间:2013-07-12 05:08:48

标签: python

一个名为add_r的函数,它将列表作为参数并添加所有数值 提供的清单的所有级别。假设输入列表将始终是可包含其他子列表和/或数字的数字或子列表的列表。 例如,add_r( [[1, 2], [3], [[4, 5, 6], [7, 8, [9, 10]]]])应该返回55.进入 作为函数参数提供的输入列表可以包含任何深度的子列表的帐户。

1 个答案:

答案 0 :(得分:2)

使用递归函数:

from collections import Iterable
def add_r(lis):
     for x in lis:
         if isinstance(x, Iterable):
             for y in add_r(x):
                 yield y
         else:        
             yield x

>>> lis = [[1, 2], [3], [[4, 5, 6], [7, 8, [9, 10]]]]
>>> sum(add_r(lis))
55

在py2.x上,你也可以使用compiler.ast.flatten

>>> from compiler.ast import flatten
>>> sum(flatten(lis))
55