擅长:python、mysql、java
<p>您需要将<code>count</code>传递给递归调用;局部变量不会神奇地传递给新函数调用:</p>
<pre><code>def format_nested(lst, depth=1):
s = []
for element in lst:
if isinstance(element, list):
s.append(print_nested(element, depth + 1))
else:
s.append('{0} {1}\n'.format(depth * '*', element))
return ''.join(s)
</code></pre>
<p>我用代码解决了其他各种问题:</p>
<ul>
<li>使用描述性函数和参数名称。<code>Function</code>不是个好名字。你知道吗</li>
<li>使用列表构建字符串的元素,然后使用<code>str.join()</code>;这比通过串联构建字符串要快。你知道吗</li>
<li>仅在递归时增加深度计数器,而不是针对列表当前级别中的每个元素。你知道吗</li>
<li>使用<code>isinstance()</code>测试特定类型。你知道吗</li>
<li>字符串格式使得用常量元素(如空格和换行符)构建字符串变得更容易一些。你知道吗</li>
</ul>
<p>演示:</p>
<pre><code>>>> format_nested([2, 4, [[3, 8], 1]])
'* 2\n* 4\n*** 3\n*** 8\n** 1\n'
>>> print format_nested([2, 4, [[3, 8], 1]])
* 2
* 4
*** 3
*** 8
** 1
</code></pre>