python for loops:这是做什么的?



我是python的新手,我正在使用python随机模块和for循环。

我不小心输入了这个

from random import choice
secret_num = []
for i in range(4):
num = choice(range(10))
secret_num.append(secret_num)
print(secret_num)

不把num附加到secret_num list,而是附加secret_num

但是现在我很好奇这个程序是做什么的

我得到了这样的输出:

[[...], [...], [...], [...]]

secret_num = []是一个空列表,您将其附加到自身(这在技术上将其转换为非空列表)。这叫做自引用。

正在发生的事情是secret_num将自己存储为对象,但是,由于secret_num的大小是动态的(当您向元列表添加项时,子列表的大小也会增加),因此列表显示为...或省略符。

注意:不可能打印被自己插入修改过的对象,因为它会进入无限递归。想想看,如果你通过将自己插入到列表中来修改列表,那么你所引用的新更新的列表也会被插入到列表中,因为你只指向对象。这就是python使用省略号(…)而不是实际对象的原因。

阅读我之前的回答,它更详细地讨论了这个问题。

最新更新