aliens = []
new_alien = {'colour': 'green', 'point': '5', 'speed': 'slow'}
for alien in range(0, 30):
aliens.append(new_alien)
print(aliens)
for alien in aliens[0: 3]:
if alien['colour'] == 'green':
alien['colour'] = 'yellow'
alien['point'] = '10'
alien['speed'] = 'medium'
for laien in aliens[0: 5]:
print(laien)
# 这是书上的:
aliens = []
for alien in range(0, 30):
new_alien = {'colour': 'green', 'point': '5', 'speed': 'slow'}
aliens.append(new_alien)
print(aliens)
for alien in aliens[0: 3]:
if alien['colour'] == 'green':
alien['colour'] = 'yellow'
alien['point'] = '10'
alien['speed'] = 'medium'
for laien in aliens[0: 5]:
print(laien)
1是 for laien in aliens[0: 5]: 前多了个空格
2是你new_alien字典在for循环外创建,
字典是按地址传递的,当把同一个字典多次添加到列表中时,列表中每个字典都是同一个地址。
改变其中一个字典的属性,列表中所有字典都会一起改变。
应该是在循环中每次都创建一个新的字典,让列表中每个字典都是不同的地址。
如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮