鱼C论坛

 找回密码
 立即注册
查看: 2694|回复: 4

关于append方法的一点小疑问

[复制链接]
发表于 2017-2-9 15:49:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

print(selfref_list)

很普通的调用了append方法,我以为会输出[1, 2, 3, [1,2,3]],但实际输出[1, 2, 3, [...]]这个,请大神帮忙解答下吧,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-9 16:04:10 | 显示全部楼层
本帖最后由 DarkmasterSugar 于 2017-2-9 16:05 编辑

这事实上产生递归了,python没办法表示出来,不信你可以试试看看selfref_list[3][3][3]……还是这么个东西

我估计你只是想这么写吧
In [1]: selfref_list = [1,2,3]

In [2]: selfref_list
Out[2]: [1, 2, 3]

In [3]: selfref_list.append(selfref_list[:])

In [4]: selfref_list
Out[4]: [1, 2, 3, [1, 2, 3]]

做一次列表的切片浅拷贝
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-9 16:20:31 | 显示全部楼层
DarkmasterSugar 发表于 2017-2-9 16:04
这事实上产生递归了,python没办法表示出来,不信你可以试试看看selfref_list[3][3][3]……还是这么个东西
...

浅切片这个确实是我以为会出现的结果

但是之前对递归的看法是必须满足调用自身且有循环才算递归,这个只调用了一次,也算递归吗?谢谢哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-10 09:28:30 | 显示全部楼层
跟镜子照镜子的原理一样,(a)添加到[a]里面,然后[a]被动改变了(a),(a)又继续改变[a],无限循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-10 10:43:37 | 显示全部楼层
32269100 发表于 2017-2-10 09:28
跟镜子照镜子的原理一样,(a)添加到[a]里面,然后[a]被动改变了(a),(a)又继续改变[a],无限循环。

恩恩,这个明白了,谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 14:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表