首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >令人困惑的[...]Python中的List :它是什么?

令人困惑的[...]Python中的List :它是什么?
EN

Stack Overflow用户
提问于 2008-12-29 02:46:31
回答 2查看 2.7K关注 0票数 17

所以我用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

所以到底是什么.

EN

回答 2

Stack Overflow用户

发布于 2008-12-29 03:03:22

我不明白你上面的代码,但是...我认为是Python解释器跳过了无限的数据结构。例如:

>>> a = [0, 1]
>>> a[0] = a
>>> a
[[...], 1]

看起来你的树形结构正在变得循环。

关于切片对象的答案是离题的。

票数 5
EN

Stack Overflow用户

发布于 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

换句话说,它类似于

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/397034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档