回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在使用Python时遇到了一些麻烦。我定义了一个简单的函数,它以两个列表(都包含两个元组)作为参数。在函数执行过程中,元组会逐渐添加到<code>addmap</code>,而在函数的最后,名为<code>toberemoved</code>的列表会从<code>removemap</code>中删除</p>
<p>这两个参数都表示函数外部的列表。虽然函数运行后列表<code>addmap</code>发生了变化,但<code>removemap</code>保持不变。这很奇怪,因为如果我在函数中打印出<code>removemap</code>,它会显示我想要的结果。我只是看不到外面。这是怎么回事?谢谢你</p>
<pre class="lang-py prettyprint-override"><code>def loescheeinzelgaenger(removemap, addmap):
toberemoved = [] #lists all the list values which should be removed from the removemap and added to the addmap
for row in range(shape[0]):
for column in range(shape[1]):
if (row,column) in removemap:
# define 4 neighbours
n1 = (row - 1, column)
n2 = (row, column - 1)
n3 = (row + 1, column)
n4 = (row, column + 1)
if intersection([n1,n2,n3,n4],removemap) == []:
toberemoved.append((row, column))
addmap.append((row, column))
elif intersection([n1,n2,n3],removemap) == []:
toberemoved.append((row, column))
addmap.append((row, column))
elif intersection([n2,n3,n4],removemap) == []:
toberemoved.append((row, column))
addmap.append((row, column))
elif intersection([n1, n3,n4],removemap) == []:
toberemoved.append((row, column))
addmap.append((row, column))
elif intersection([n1,n2,n4],removemap) == []:
toberemoved.append((row, column))
addmap.append((row, column))
removemap = [x for x in removemap if x not in toberemoved]
print(removemap) #it's changed here
#further down:
print(grassMap) #initial
print(waterMap) #initial
loescheeinzelgaenger(waterMap,grassMap)
print(grassMap) #changed
print(waterMap) #unchanged
</code></pre>