这出现在 Python的隐藏功能中,但我看不到可以解释该功能如何工作的好文档或示例.
省略号用于切割高维数据结构.
它被设计为在这一点上,插入尽可能多的完整切片(:
)以将多维切片扩展到所有维度.
示例:
>>> from numpy import arange >>> a = arange(16).reshape(2,2,2,2)
现在,您有一个2x2x2x2的4维矩阵.要选择第4维中的所有第一个元素,可以使用省略号表示法
>>> a[..., 0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14])
这相当于
>>> a[:,:,:,0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14])
在您自己的实现中,您可以自由地忽略上面提到的合同,并将其用于您认为合适的任何内容.
你可以在自己的类中使用它,因为没有内置类可以使用它.
Numpy使用它,如文档中所述.这里有一些例子.
在你自己的课堂上,你会像这样使用它:
>>> class TestEllipsis(object): ... def __getitem__(self, item): ... if item is Ellipsis: ... return "Returning all items" ... else: ... return "return %r items" % item ... >>> x = TestEllipsis() >>> print x[2] return 2 items >>> print x[...] Returning all items
当然,还有python文档和语言参考.但那些并不是很有帮助.
这是省略号的另一个用途,它与切片无关:我经常在与队列的线程内通信中使用它,作为发出"完成"信号的标记; 它就在那里,它是一个对象,它是一个单例,它的名字意味着"缺乏",并且它不是过度使用的无(可以作为正常数据流的一部分放入队列中).因人而异.