Skip to main content
 首页 » 编程设计

python之求和嵌套整数列表的嵌套列表的嵌套列表

2025年05月04日12shihaiming

给定一个 Python 列表,其元素是整数或整数列表(只是我们不知道嵌套的深度),我们如何找到列表中每个单独整数的总和?

找到一个嵌套只有一层的列表的总和是相当简单的,例如

[1, [1, 2, 3]] 
# sum is 7 

但是如果嵌套达到两层、三层或更多层会怎样呢?

[1, [1, [2, 3]]] 
# two levels deep 
 
[1, [1, [2, [3]]]] 
# three levels deep 

上述每种情况的总和都是相同的(即 7)。我认为最好的方法是使用递归,其中基本情况是具有单个整数元素的列表,但除此之外我就卡住了。

请您参考如下方法:

您可以使用这个递归解决方案:

from collections import Iterable 
def flatten(collection): 
  for element in collection: 
    if isinstance(element, Iterable): 
      for x in flatten(element): 
        yield x 
    else: 
      yield element 

演示:

>>> lis = [1, [1, [2, [3]]]] 
>>> sum(flatten(lis)) 
7 
>>> lis = [1, [1, 2, 3]] 
>>> sum(flatten(lis)) 
7 
>>> lis = [1, [1, [2, 3]]] 
>>> sum(flatten(lis)) 
7