擅长:python、mysql、java
<p>是的,你用错了工具。列表理解返回一个全新的值,因此您可以执行以下操作:</p>
<pre><code>self.__map = [[c.state | s for c in row] for row in self.__map]
</code></pre>
<p>但我的直觉是你应该只使用两个for循环:</p>
^{pr2}$
<p>在列表理解中,结果必须是一个表达式。那是因为你的双重理解只是为了这个:</p>
<pre><code>list1 = []
for row in self.__map:
list2 = []
for c in row:
list2.append(c.state | s)
list1.append(list2)
self.__map = list1
</code></pre>
<p>说起来没有道理</p>
<pre><code> list2.append(c.state |= s)
</code></pre>
<p>因为最里面的表达式必须返回要附加到<code>list2</code>的内容。在</p>
<p>基本上,每次更新标志时,列表理解都会生成一个全新的self.\u图。如果那是你想要的,那就去吧。但我怀疑你只是想改变现有的地图。在这种情况下,使用双<code>for</code>循环。在</p>