3
我有一個由嵌套列表和字典組成的結構。我想對每個元素應用 函數。如何做到沒有遞歸。訪問嵌套列表和字典中的所有元素而不遞歸
def visit(data, func):
if isinstance(data, dict):
for k, v in data.items():
data[k] = visit(v, func)
return data
elif isinstance(data, list):
for i, v in enumerate(data):
data[i] = visit(v, func)
return data
else:
return func(data)
的遞歸版本適用於小型的數據,但我打的RecursionError 異常時的數據是大的。
我找了一般的方法來消除遞歸,我發現那些依靠 第一轉化遞歸調用尾調用,我這個問題是 在我的例子遞歸調用是一個循環中。
你會打的,它們嵌套超過1000個深層次的數據結構,這似乎是可笑的遞歸限制。我懷疑實際發生的情況是你的數據有周期。 –
@ Zii8roZi爲什麼不直接遞增遞歸限制? 'import sys; sys.setrecursionlimit(100000)' – Frito
你想實現什麼?列表和字典應該如何處理,因爲列表僅包含元素,而字典則提供鍵 - 值對。 – albert