擅长:python、mysql、java
<p>直接翻译就是</p>
<pre><code>mat = [[3], [4], [4], [0], [1, 2]]
nwalls = 5*[1]
for i in range(1, 3):
_nwalls = []
for j in range(5):
tot = 0 # - sum
for k in mat[j]: # /
tot += nwalls[k] # /
_nwalls.append(tot)
nwalls = _nwalls
</code></pre>
<p><code>(nwalls[k] for k in mat[j])</code>它本身是一个生成器,在python repl中,可以将其检查为:</p>
^{pr2}$
<p>并且<code>sum</code>可以取一个生成器,如<code>sum( (x for x in range(10)) )</code>,和{a1}所说</p>
<blockquote>
<p>if a function call has a single positional argument, it can be a generator expression without extra parentheses, but in all other cases you have to parenthesize it.</p>
</blockquote>
<p>所以看起来是<code>sum(x for x in range(10))</code></p>