gpt4 book ai didi

python - for 循环和索引切片的组合未返回预期结果

转载 作者:行者123 更新时间:2023-11-30 22:24:56 25 4
gpt4 key购买 nike

提前道歉,我讨厌问这样的新问题(这是我正在学习的第一语言),但我的理解显然存在差距,而且我找不到任何解决问题的内容的链接我正在经历。

下面的代码定义了 3 个字典和一个空列表。然后,我运行一个 for 循环,用 30 个“慢速外星人”填充列表。

然后,我对列表中的前 10 个条目运行另一个循环,以便将该特定实例更新为“Fast Alien”字典。但是,我似乎要替换列表中的所有字典。

如果我能找到任何可以进一步讨论/解决/教育我的文章,我将不胜感激。

slow_alien = {
"Name": "Slow Alien",
"Colour": "Green",
"Points": 10,
"X Position": 15,
"Y Position": 20,
"Current Speed": "Slow",
"Height": 1.8,
}
medium_alien = {
"Name": "Medium Alien",
"Colour": "Yellow",
"Points": 15,
"X Position": 30,
"Y Position": 20,
"Current Speed": "Medium",
"Height": 2.2,
}
fast_alien = {
"Name": "Fast Alien",
"Colour": "Red",
"Points": 20,
"X Position": 45,
"Y Position": 20,
"Current Speed": "Fast",
"Height": 2.6,
}
aliens = []

for alien in range(30):
aliens.append(slow_alien)

for alien in aliens[:10]:
if alien == slow_alien:
alien.update(fast_alien)

for alien in aliens:
for key, value in alien.items():
print(str(key) + ": " + str(value))
print("")
print("The aliens list contains " + str(len(aliens)) + " dictionaries")

谢谢

卡尔.

最佳答案

该列表有 30 个对同一 slow_alien 字典的引用。

要解决此问题,请尝试以下操作:

aliens = []

for _ in range(30):
aliens.append(slow_alien.copy())

for alien in aliens[:10]:
alien.update(fast_alien)

这遵循您当前的方法,尽管您也可以跳过更新并立即创建快速更新:

aliens = []

for _ in range(10):
aliens.append(fast_alien.copy())
for _ in range(20):
aliens.append(slow_alien.copy())

关于python - for 循环和索引切片的组合未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47695333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com