擅长:python、mysql、java
<p>Python3.3版本:</p>
<pre><code>def lengths(x):
if isinstance(x,list):
yield len(x)
for y in x:
yield from lengths(y)
</code></pre>
<p>用法:</p>
<pre><code>>>> l = [[], [3,[4,5],[2,3,4,5,3,3], [7], 5, [1,2,3], [3,4]], [1,2,3,4,5]]
>>> max(lengths(l))
7
</code></pre>
<p>在Python2.6+中,没有<code>yield from</code>语句(在Python3.3中引入),因此必须稍微更改代码:</p>
<pre><code>def lengths(x):
if isinstance(x,list):
yield len(x)
for y in x:
for z in lengths(y):
yield z
</code></pre>