<p>您的问题存在于以下行:</p>
<p><code>medalTracker = [medalTracker.append(i) for i in allCountries]</code></p>
<p>当您<code>append</code>一个<code>list</code>时,它会修改<code>list</code>,但返回<code>None</code>。你可以更清楚地看到这里发生了什么:</p>
<pre><code>allCountries = ['ITA', 'JPN', 'AUS', 'KOR', 'TPE'] # This is essentially the shorter equivalent of your list.
medalTracker = []
def show_medalTracker_detail():
print(f'medalTracker id: {id(medalTracker)}, values: {medalTracker}')
def peek(x):
result = medalTracker.append(x)
show_medalTracker_detail()
return result
</code></pre>
<p>运行时:</p>
<pre><code>>>> show_medalTracker_detail()
medalTracker id: 52731616, values: []
>>> medalTracker = [peek(i) for i in allCountries]
medalTracker id: 52731616, values: ['ITA']
medalTracker id: 52731616, values: ['ITA', 'JPN']
medalTracker id: 52731616, values: ['ITA', 'JPN', 'AUS']
medalTracker id: 52731616, values: ['ITA', 'JPN', 'AUS', 'KOR']
medalTracker id: 52731616, values: ['ITA', 'JPN', 'AUS', 'KOR', 'TPE']
>>> show_medalTracker_detail()
medalTracker id: 52736448, values: [None, None, None, None, None]
</code></pre>
<p>注意到<code>medalTracker</code>对象id和值在理解列表后是如何变化的吗?这是因为在列表理解完成循环和追加之后,它还创建了一个<code>None</code>列表,并且正在重新分配该列表(一个新对象)以替换现有的<code>medalTracker</code>。你知道吗</p>
<p>解决方案是只使用<code>medalTracker = list(allCountries)</code>,或者如果要追加,则使用for循环:</p>
<pre><code>for i in allCountries:
medalTracker.append(i)
</code></pre>