重複の可能性:
Python でのリストのフラット化 (不規則な) リスト
リストを平坦化しようとしているときに、文字列を渡すと無限再帰に遭遇します。私の理解では、これは文字列の最初の要素が再び文字列であり、それを繰り返し処理できるために発生します。要素が文字列のように鳴るかどうかを確認することでこれを解決したため、2番目の例外が発生しました。これはかなり厄介なようです。また、本当の問題は、文字列には再帰に対する「基本ケース」がないという事実から生じます。このプロパティを持つ他のオブジェクトはありますか?
誰もがよりクリーンなソリューションを持っていますか?
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
前もって感謝します。どこかに似たような投稿があれば申し訳ありませんが、見つけられませんでした。