擅长:python、mysql、java
<p>除了对代码进行一些小的修改(由@Zero Piraeus引发的问题),您的问题可能已经得到了回答<a href="https://stackoverflow.com/questions/6340351/python-iterating-through-list-of-list">here</a>。遍历N度(树)列表的可能代码如下:</p>
<pre><code>def traverse(item):
try:
for i in iter(item):
for j in traverse(i):
yield j
except TypeError:
yield item
</code></pre>
<p>示例:</p>
<pre><code>l = [1, [2, 3], [4, 5, [[6, 7], 8], 9], 10]
print [i for i in traverse(l)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</code></pre>
<p>使其工作的关键是递归,使其有效工作的关键是使用生成器(关键字<code>yield</code>给出提示)。生成器将遍历列表列表并逐项返回给您,而无需复制数据或创建一个完整的新列表(除非您使用整个生成器将结果分配给列表,如我的示例中所示)</p>
<p>使用迭代器和生成器可能是很奇怪的概念(主要是关键字<code>yield</code>)。签出这个<a href="https://stackoverflow.com/questions/231767/the-python-yield-keyword-explained">great answer</a>以完全理解它们</p>