你如何在Python中使用省略号切片语法?

这出现在Python的隐藏function ,但我看不到很好的文档或例子,解释如何function的作品。

你会在自己的课堂上使用它,因为没有内build类使用它。

Numpy使用它,如文档中所述。 这里有一些例子。

在你自己的class级里,你会这样使用它:

>>> 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文档和语言参考 。 但是这些不是很有帮助。

省略号用于切割更高维度的数据结构。

它被devise成在这一点上意味着插入尽可能多的完整切片(:)以将多维切片延伸到所有维度

例如

 >>> from numpy import arange >>> a = arange(16).reshape(2,2,2,2) 

现在,你有一个2x2x2x2的4维matrix。 要select第四维中的所有第一个元素,可以使用省略号

 >>> a[..., 0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14]) 

相当于

 >>> a[:,:,:,0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14]) 

在你自己的实现中,你可以自由地忽略上面提到的合同,并将其用于任何你认为合适的地方。

这是省略号的另一个用途,它与片无关:我经常在线程内与队列通信使用它,作为表示“完成”的标记。 它在那里,它是一个对象,它是一个单例,它的名字意思是“缺乏”,它不是被滥用的无(可以作为正常数据stream的一部分放入队列中)。 因人而异。

PS:我不介意低估,当我在回答中所说的话对于这个问题是没有用的。 然后我试着改进我的答案。 但是我确定无法理解在这个问题中如何能够降低任何答案 – 当问题是“ 如何在Python中使用省略号”…似乎人们认为downvoting意味着“我不同意”或“我不不喜欢这个“。

Python文档对此不是很清楚,但还有另一种省略号的用法。 在Python的情况下,它被用作无限数据结构的表示。 这个问题讨论如何和一些实际的应用。