首页 > 解决方案 > python for 循环:这是做什么的?

问题描述

我是 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)

而不是附加numsecret_num listi 附加secret_num

但现在我很好奇这个程序做了什么。

我得到了这个输出:

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

标签: pythonfor-loop

解决方案


secret_num = []是您要附加到自身的空列表(从技术上讲,这会将其变为非空列表)。这称为自引用。

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

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

阅读我以前的答案,其中更详细地讨论了这一点。


推荐阅读