gpt4 book ai didi

python - 我认为它应该包含每个 "append"的不同列表,但事实并非如此

转载 作者:行者123 更新时间:2023-12-01 04:32:53 25 4
gpt4 key购买 nike

在我运行这段代码后,它总是会返回一个包含完全相同的较小列表的列表...

import time
from random import randint

t = [0,0]
a = []

def rec():
a.append(t)

for i in range(10):
t[0] = randint(10,20)
t[1] = randint(40,500)
rec()
time.sleep(.0001)

print a

我得到类似这样的输出,为什么?

[[17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134]]

最佳答案

欢迎来到可变类型与不可变类型的古怪世界!

缺点是在Python中列表是可变的,这意味着对列表的引用实际上会改变原始列表!您必须通过执行 t = [randint(10,20), randint(40,500)] 创建一个新列表。这应该对你有用:)

有关可变类型与不可变类型的更多信息,请参阅 this SO Q/A !

我还建议不要使用像 rec 这样的函数。当不需要全局变量时,尽量避免使用它们(它们会使调试变得比需要的更加困难)。为什么不直接传入一个参数呢?或者直接使用 append 内联!

关于python - 我认为它应该包含每个 "append"的不同列表,但事实并非如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32141589/

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