【发布时间】:2022-01-24 11:56:11
【问题描述】:
我知道如何获得仅包含数字的嵌套列表的总和,但我如何获得同时包含字符串和数字的嵌套列表的总和?
def sum_all_numbers(seq):
if not seq:
return 0
elif isinstance(seq[0], str):
seq.remove(seq[0])
elif isinstance(seq[0], list):
return sum_all_numbers(seq[0]) + sum_all_numbers(seq[1:])
else:
return seq[0] + sum_all_numbers(seq[1:])
我想使用双重递归来解决这个问题,但我没有设法让 isinstance 部分正确。
sum_all_numbers(["a", "b", ["c", 3, 4, [5, "d"], 10], 9])
是输入
【问题讨论】:
-
请注意,当您执行
seq.remove(seq[0])时,您实际上是在修改seq并删除一个元素!这不是您的功能应该做的;它只应该对数字求和而不会损坏列表。其他语言有一个const关键字来保证函数不会损坏它的参数; python没有,所以你必须格外小心。
标签: python recursion nested-lists