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