擅长:python、mysql、java
<p>通常,将这些东西表示为生成器更容易</p>
<pre><code>L = [2, 4, [[3, 8], 1]]
def nest_gen(L):
if isinstance(L, list):
for i in L:
for j in nest_gen(i):
yield "*"+str(j)
else:
yield L
for row in nest_gen(L):
print(row)
</code></pre>
<p>在Python3.3+中,可以使用<code>yield from</code></p>
<pre><code>L = [2, 4, [[3, 8], 1]]
def nest_gen(L):
if isinstance(L, list):
yield from ("*"+str(j) for i in L for j in nest_gen(i))
else:
yield L
for row in nest_gen(L):
print(row)
</code></pre>
<p>您可以将depth/item作为元组来生成,而不是一遍又一遍地连接字符串</p>
<pre><code>L = [2, 4, [[3, 8], 1]]
def nest_gen(L):
if isinstance(L, list):
yield from ((j+1, k) for i in L for j, k in nest_gen(i))
else:
yield 0, L
for item in nest_gen(L):
print("{:*>{}} {}".format('', *item))
</code></pre>