擅长:python、mysql、java
<p>当尝试另一个答案时,函数无法递归,因此我将其修改为不递归。它仍然工作得很快,可以处理大的嵌套列表(至少在我的测试中是这样)。它是一个Python 3专用函数。</p>
<pre><code># Originally by Bruno Polaco
def traverse(item, reverse=False):
its = [item] #stack of items to-be-processed
out = [] # Output (no longer generator)
ite = False
while len(its) > 0:
it = its.pop()
try: # Check if item is iterable
iter(it)
ite = not isinstance(it, str)
except TypeError:
ite = False
if ite: # Do something with it
for i in it:
its.append(i)
else:
out.append(it)
if not reverse:
out.reverse()
return out
</code></pre>