我是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使用省略号(…)而不是实际对象的原因。
阅读我之前的回答,它更详细地讨论了这个问题。