我在玩python。我在IDLE中使用了以下代码:p = [1, 2]p[1:1] = [p]print p输出为:[1, [...], 2]这是[…]什么 有趣的是,我现在可以将其用作无穷大列表的列表,即p[1][1][1]....我可以根据需要编写以上内容,并且仍然可以使用。它在内存中如何表示?有什么用?在某些情况下有用的示例可能会有所帮助。任何与官方文档的链接都将非常有用。
3 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
这意味着您创建了一个嵌套在其内部的无限列表,该列表无法打印。p
包含p
其中包含p
...,依此类推。这种[...]
记法是一种让您知道这一点并告知它无法表示的方式!看看@ 6502的答案,可以看到一张很好的图片,显示正在发生的事情。
现在,关于编辑后的三个新项目:
这个答案似乎涵盖了它
Ignacio的链接描述了一些可能的用途
与编程语言相比,这更是数据结构设计的主题,因此不太可能在Python的官方文档中找到任何参考。
莫回无
TA贡献1865条经验 获得超7个赞
这是您的代码创建的
它是一个列表,其中第一个和最后一个元素指向两个数字(1和2),中间的元素指向列表本身。
在Common Lisp中,当启用打印圆形结构时,此类对象将被打印为
#1=#(1 #1# 2)
表示存在一个对象(用标记为1 #1=),该对象是具有三个元素的向量,第二个是对象本身(用反向引用#1#)。
取而代之的是,在Python中,您仅获得结构为圆形的信息[...]。
在这种特定情况下,描述不是模棱两可的(它向后指向一个列表,但是只有一个列表,因此它一定是那个列表)。但是在其他情况下可能是模棱两可的...例如
[1, [2, [...], 3]]
向后引用可以指向外部列表,也可以指向内部列表。可以用以下方式创建以相同方式打印的这两种不同结构
x = [1, [2, 3]]
x[1][1:1] = [x[1]]
y = [1, [2, 3]]
y[1][1:1] = [y]
print(x)
print(y)
他们会像
添加回答
举报
0/150
提交
取消