Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 省略[…]在列表中是什么意思?_Python_Python 2.7_Python 3.x_List_Ellipsis - Fatal编程技术网

Python 省略[…]在列表中是什么意思?

Python 省略[…]在列表中是什么意思?,python,python-2.7,python-3.x,list,ellipsis,Python,Python 2.7,Python 3.x,List,Ellipsis,我在玩python。我在IDLE中使用了以下代码: p = [1, 2] p[1:1] = [p] print p 结果是: [1, [...], 2] 这是什么?有趣的是,我现在可以用它作为无限大的列表,也就是说 p[1][1][1].... 我可以写上面的内容,只要我愿意,它仍然可以工作 编辑: 它在内存中是如何表示的 它有什么用?举一些有用的例子会很有帮助 任何与官方文件的链接都会非常有用 这意味着您创建了一个嵌套在其内部的无限列表,无法打印p包含p其中包含p。。。等等[…]符号

我在玩python。我在IDLE中使用了以下代码:

p  = [1, 2]
p[1:1] = [p]
print p
结果是:

[1, [...], 2]
这是什么?有趣的是,我现在可以用它作为无限大的列表,也就是说

p[1][1][1]....
我可以写上面的内容,只要我愿意,它仍然可以工作

编辑:

  • 它在内存中是如何表示的
  • 它有什么用?举一些有用的例子会很有帮助
  • 任何与官方文件的链接都会非常有用

    • 这意味着您创建了一个嵌套在其内部的无限列表,无法打印
      p
      包含
      p
      其中包含
      p
      。。。等等
      […]
      符号是一种让您知道这一点的方法,并告知您它无法表示!看一看@6502的答案,可以看到一张很好的图片,显示正在发生的事情

      现在,关于编辑后的三个新项目:

      • 这似乎涵盖了它
      • 伊格纳西奥描述了一些可能的用途
      • 与编程语言相比,这更像是数据结构设计的主题,因此在Python的官方文档中不太可能找到任何参考
        • 对于“它有什么用”的问题,这里有一个具体的例子

          是一种有时用于解释计算机语言的评估策略。这是惰性评估的常用策略,尤其是函数式语言

          起点是构建一个表示程序将采取的“步骤”序列的图。根据该程序中使用的控制结构,这可能导致循环图(因为该程序包含某种“永久”循环——或者使用递归,其“深度”将在计算时已知,但在图形创建时不知道)

          为了表示这样的图形,您需要无限的“数据结构”(有时称为递归数据结构),就像您注意到的那样。但通常情况下,要复杂一点


          如果您对该主题感兴趣,这里有一个关于该主题的讲座:

          这是您的代码创建的内容

          它是一个列表,其中第一个和最后一个元素指向两个数字(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]
          打印(x)
          打印(y)
          
          它们也会在记忆中留下


          据我所知,这是一个固定点的例子

          p  = [1, 2]
          p[1:1] = [p]
          f = lambda x:x[1]
          f(p)==p
          f(f(p))==p
          

          在面向对象编程中,我们一直在这样做。如果任意两个对象直接或间接地相互引用,则它们都是无限递归结构(或者都是同一无限递归结构的一部分,具体取决于您如何看待它)。这就是为什么你看不到像列表这样原始的东西——因为我们通常最好把概念描述为相互关联的“对象”,而不是“无限列表”

          您还可以使用无限递归字典获取
          。假设您想要一个三角形角的字典,其中每个值都是连接到该角的其他角的字典。您可以这样设置:

          a = {}
          b = {}
          c = {}
          triangle = {"a": a, "b": b, "c": c}
          a["b"] = b
          a["c"] = c
          b["a"] = a
          b["c"] = c
          c["a"] = a
          c["b"] = b
          

          现在,如果你打印
          triangle
          (或
          a
          b
          c
          ),你会看到它充满了
          {…}
          ,因为任何两个角都是相互参照的。

          那么它占用了infinte内存吗?我知道这是不可能的。它是如何表示的?它有什么用途?@Zel:List元素是引用。第二个元素是对列表本身的引用,Python将其标识为引用的无限循环,因此决定将其缩短,它不是真正的无限循环。不,除了一个思维实验之外,它不是真的有用:)有。。。无限递归结构的一些用途。但是不多。@IgnacioVazquez Abrams一些例子会有用。一个简单的例子是
          p=[1];p[0]=p
          。我认为这是的重复,尽管这个问题的问题(和答案)更好。Dreampie很聪明`>>>p[1:1]=[p]>>p3:[1,2]>>>`提供准确的答案detail@RahulGautam没有得到这个
          p3:[1,2]
          。你运行了什么?
          id=307477548
          p
          的id,因此很容易理解它指的是它自己。无论如何,非常好的问题@ZelYou可以找到
          [1,2,[…],3]]
          的内容如下:
          x[1]=[2,[…],3]
          y[1]=[2,1,[…],3]
          。这意味着x由一个1组成,然后是重复的2,而y由交替的1和2组成。@csharpler:当然,你可以通过分析内容来区分这两个,但是它们是用相同的表示法打印出来的。在普通的Lisp格式中,它们将是
          #(1#1=#(2#1#3))
          用于
          x
          #1=#(1#(2#1#3))
          用于
          y
          @BurhanKhalid:inkscape用于第一个数组,而gimp用于第二个数组(因为我扔掉了svg)@csharpler:您无法创建一个“列表”,因为Python数组确实可以调整大小,不是链表。“无限列表”