<blockquote>
<p>but it goes into newline with each number</p>
</blockquote>
<p>这是因为在每个数字之后添加换行符,而不是在每个子列表之后添加换行符。如果您希望这样做,则应在此处添加换行符:</p>
<pre><code>c = ''
for r in a:
for b in r:
c += str(b)
c += '\n'
return c
</code></pre>
<p>但请注意,附加到字符串是非常低效的,因为它最终会创建许多中间字符串。通常,您会创建一个列表,将字符串部分附加到其中,然后最终加入该列表以将其转换为单个字符串:</p>
<pre><code>c = []
for r in a:
for b in r:
c.append(str(b))
c.append('\n')
return ''.join(c)
</code></pre>
<p>然后,您还可以使用列表表达式在多个步骤中将其缩短;首先,对于内部列表:</p>
<pre><code>c = []
for r in a:
c.extend([str(b) for b in r])
c.append('\n')
return ''.join(c)
</code></pre>
<p>你可以先加入这个列表:</p>
<pre><code>c = []
for r in a:
c.append(''.join([str(b) for b in r]))
c.append('\n')
return ''.join(c)
</code></pre>
<p>然后可以将换行符移到外部联接中,并为外部列表创建一个新的列表:</p>
<pre><code>c = [''.join([str(b) for b in r]) for r in a]
return '\n'.join(c)
</code></pre>
<p>在这一点上,你也可以把它做成一行:</p>
<pre><code>return '\n'.join([''.join([str(b) for b in r]) for r in a])
</code></pre>
<p>正如Padraic在注释中指出的那样,在换行符上的连接也会防止字符串有一个尾随<code>\n</code>,如果您一直将它添加到循环中,它就会结束。否则,您可以在之后使用<code>str.rstrip('\n')</code>来除去它。你知道吗</p>