我正在使用“Python速成课程”自学Python,并且一直在编写本书中的大部分代码以及设定的问题。有一个例子,使用以下代码创建字典列表:
# Make an empty list for storing aliens.
aliens = []
# Make 30 green aliens.
for alien_number in range (0,30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
# Show the first 5 aliens:
for alien in aliens[0:5]:
print(alien)
print("...")
这按预期工作,产生了30个绿色外星人的初始列表,然后前三个被修改为黄色。
然而,我正在试验代码,我想知道为什么
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
line在第一个for循环中(因为它似乎每次创建相同的东西,对我来说它似乎是多余的,它在循环中)。
将它移到外面(我只会进行相关更改,因此第二块代码会被更改):
# Make 30 green aliens.
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
for alien_number in range (0,30):
aliens.append(new_alien)
这会产生我无法理解的输出 - ALL 外星人变黄 - 第二个for循环的[0:3]部分无效 - 我尝试将其设置为各种各样的值,并没有改变功能 - 它们全部由第二个循环改变。
有人可以解释为什么会这样吗?我很高兴阅读一个适当的链接,如果有人可以提供一个,但我想不出要搜索什么可以解释这个(因为我不知道发生了什么,因此不知道该寻找其他什么比黄色外星人!)