【问题标题】:Python Random Choice Returning Same Result in Every Loop IterationPython 随机选择在每个循环迭代中返回相同的结果
【发布时间】:2020-06-08 20:48:35
【问题描述】:

有谁知道为什么当我运行这段代码时,我会得到相同的字典条目附加了 100 次?

from random import choice

aliens = []
alien = {}

colors = ['red', 'blue', 'green', 'black', 'purple', 'brown', 'yellow', 'coral']
points = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
speeds = ['slow', 'medium', 'fast']

for i in range(1,101):
    alien['color'] = choice(colors)
    alien['points'] = choice(points)
    alien['speed'] = choice(speeds)
    aliens.append(alien)

print(aliens)

【问题讨论】:

  • 你真的只有一个外星人,你每次通过循环都会修改它。当循环结束时,那个外星人保留了它的最后一个值,aliens 中的每个元素都指向同一个对象。尝试将alien = {} 放入循环的顶部。
  • 克里斯,这很好用。谢谢!

标签: python loops random


【解决方案1】:

字典和列表由链接存储并将其添加到另一个列表,您只需创建一个指向同一字典的新链接。只需使用alien.copy()

from random import choice

aliens = []
alien = {}

colors = ['red', 'blue', 'green', 'black', 'purple', 'brown', 'yellow', 'coral']
points = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
speeds = ['slow', 'medium', 'fast']

for i in range(1,101):
    alien['color'] = choice(colors)
    alien['points'] = choice(points)
    alien['speed'] = choice(speeds)
    aliens.append(alien.copy())

print(aliens)

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 2019-04-28
    • 2015-10-15
    • 1970-01-01
    • 2023-03-08
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多