为了账号安全,请及时绑定邮箱和手机立即绑定

python中的自引用列表?

python中的自引用列表?

SMILET 2021-03-31 22:10:57
在分析python列表时,当我看到其他编程语言无法做到的事情时,我感到很惊讶。可以说我有一个名为my_listmy_list = [1,2,3,4,5,6,7,8,9,10] 接下来,当我像my_list[9] = my_list  #I didn't seen such things possible in C/C++而当我打印的my_list,my_list[9]并且my_list[9][9],所有这些给出了相同的结果。my_list[1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]my_list[9][1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]my_list[9][9][1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]我的理解是,my_list[9]是指同一个列表称为my_list和[...]手段自我指涉列表即列表指向同一个列表,当你按照type(my_list[9])它给我type的list。[1, 2, 3, 4, 5, 6, 7, 8, 9, [...]]                              |             Does it like self referential struct pointer concept of C ?在上面的my_list示例中,我只是添加了简单的测试运行。我想知道类似的事情如何my_list[9] = my_list使python代码性能更好。my_list[9] = my_list在python中使之成为可能的背后的实际意图是什么?任何帮助将不胜感激。
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

可能是因为列表(与其他容器一样)存储了引用,但为什么不引用自身呢?

__str__/__repr__功能已经得到保护,免受会造成死循环,并显示一个省略号代替(...)。

为什么有可能呢?因为这不是不可能的。如果Python要防止这种情况发生,则意味着每次在列表中添加对象时都要检查自引用。这可能是用于维护参考高速缓存的额外O(n)存储开销,也可能是用于执行参考搜索的O(n)时间开销。


查看完整回答
反对 回复 2021-04-09
?
精慕HU

TA贡献1845条经验 获得超8个赞

python中的列表除了引用对象(如指针)外不包含任何内容。他们可以引用包括自己在内的任何对象。


查看完整回答
反对 回复 2021-04-09
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号