2011-08-28 184 views
13

我刚刚得到一个Python脚本的一些奇怪的输出:列表中的(省略号)是什么意思?

[[(7, 6), (6, 4), (7, 2)], [...], [...], [...], [(7, 6), (8, 4), (7, 2)], [...], [...], [...], [...], [...], [...], [...]] 

输出应该是元组的列表的列表。但我不知道为什么会出现。

[...]是什么意思?

我不认为它是一个空列表,因为它是一个空列表[]。这些可能是重复的吗?

+2

什么是代码? –

+0

这可能有所帮助 - http://stackoverflow.com/questions/118370/how-do-you-use-the-ellipsis-slicing-syntax-in-python – arunkumar

+0

@arunkumar:'省略号'的'repr'是' “省略号”'。 –

回答

25

这是一个递归引用。你的清单包含自己,或者至少有某种循环。

例子:

x = [] 
x.insert(0, x) 
# now the repr(x) is '[[...]]'. 

内置repr的列表检测到这种情况并不会尝试递归子列表(如通常那样),因为这会导致无限递归。

注意...并不一定告诉你哪个列表被称为:

y, z = [], [] 
x = [y, z] 
y.insert(0, z) 
z.insert(0, y) 
# looks the same as it would if y contained y and z contained z. 

所以repr是不是真的列出了完整的序列化格式。至于你为什么要得到它们:我们不是心理上的,除非我们看到代码,否则不能修复你的代码的问题。