python - 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)
而不是附加num
到secret_num list
i 附加secret_num
但现在我很好奇这个程序做了什么。
我得到了这个输出:
[[...], [...], [...], [...]]
解决方案
secret_num = []
是您要附加到自身的空列表(从技术上讲,这会将其变为非空列表)。这称为自引用。
正在发生的事情是secret_num
将自身存储为一个对象,但是,由于 secret_num 的大小是动态的(当您将项目添加到元列表时,子列表的大小也会增加),列表显示为...
或省略号。
注意:不能打印通过插入自身而修改的对象,因为它会进入无限递归。想一想,如果您通过将自身插入到列表中来修改列表,那么您所引用的新更新列表也会插入到自身中,因为您只是指向对象。这就是为什么 python 使用省略号 (...) 而不是实际对象的原因。
阅读我以前的答案,其中更详细地讨论了这一点。
推荐阅读
- spring - 如何使用条件更新表中的行是指另一个表
- python - 在 Windows 10 上使用批处理文件进行爬虫抓取没有名为 http.client 的模块错误
- java - 如何在 Kotlin 的 lambda 表达式中获取类实例?
- python - 如果出现被零除如何通过
- j2ssh - com.sshtools.publickey.InvalidPassphraseException:不支持的类型:OPENSSH PRIVATE KEY
- regex - 匹配字符及其周围的任何空格
- kubernetes - 带有 tls 的 nginx 入口失败,并显示“无法列出 *v1alpha1.TransportServer”
- javascript - 打开新标签并滚动到 ID 不起作用
- sql - 如何使用给定月份中先前已知出现条目的值填充表?
- python - 移动/重命名文件时Windows 10上的Python权限错误