可能重复:
在 Python 中展平(不规则)列表列表
在尝试展平列表时,如果我传递字符串,我会遇到无限递归。据我了解,这是因为字符串的第一个元素又是一个字符串,而字符串又可以被迭代。我通过查看我的元素是否像字符串一样嘎嘎声解决了这个问题,因此出现了第二个异常。这似乎相当混乱。此外,真正的问题来自字符串的递归没有“基本情况”这一事实。是否还有其他具有此属性的对象?
有没有人有更清洁的解决方案?
def nestedsum(lst, init_sum):
for itm in lst:
try:
init_sum +=itm
except TypeError as e:
#check if we have some string iterator
# as this can cause infinite recurrsion
try:
itm + ''
except TypeError as e2:
init_sum +=nestedsum(itm)
else:
raise TypeError("Strings cannot be summed over")
return init_sum
提前致谢。抱歉,如果某处有类似的帖子,但我没有运气找到它。