所以我用Python写了一个简单的二叉树,然后遇到了…
我不相信这与Ellipsis对象有关,更多的是与无限循环有关(由于Python的浅拷贝?)。然而,我完全搞不懂这个无限循环的源代码,以及为什么它在访问时不会扩展
>>> a
[[[[[], [], 8, 3], [[], [], 3, 2], 6, 3], [], 1, 4], [[], [], -4, 2], 0, 0]
>>> Keys(a)#With a+b
[0, 1, 6, 8, 3, -4]
>>> Keys(a)#With [a,b]
[8, [...], [...], 3, [...], [...], 6, [...], [...], 1, [...], [...], -4, [...], [...], 0, [...], [...]]
>>> Keys(a)[1]#??
[8, [...], [...], 3, [...], [...], 6, [...], [...], 1, [...], [...], -4, [...], [...], 0, [...], [...], 8, [...], [...], 3, [...], [...], 6, [...], [...], 1, [...], [...], -4, [...], [...], 0, [...], [...]]
使用a+b的版本
def Keys(x,y=[]):
if len(x):y+=[x[2]]+Keys(x[0],y)+Keys(x[1],y)#Though it seems I was using y=y[:]+, this actually outputs an ugly mess
return y
版本使用a、b
def Keys(x,y=[]):
if len(x):y+=[x[2],Keys(x[0],y),Keys(x[1],y)]
return y
所以到底是什么.
发布于 2008-12-29 03:03:22
我不明白你上面的代码,但是...我认为是Python解释器跳过了无限的数据结构。例如:
>>> a = [0, 1]
>>> a[0] = a
>>> a
[[...], 1]
看起来你的树形结构正在变得循环。
关于切片对象的答案是离题的。
发布于 2013-03-11 01:47:03
如果您使用PrettyPrinter,则输出将是不言而喻的
>>> l = [1,2,3,4]
>>> l[0]=l
>>> l
[[...], 2, 3, 4]
>>> pp = pprint.PrettyPrinter(indent = 4)
>>> pp.pprint(l)
[<Recursion on list with id=70327632>, 2, 3, 4]
>>> id(l)
70327632
换句话说,它类似于
https://stackoverflow.com/questions/397034
复制相似问题