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

这出现在Python的Hidden特性中,但我看不到有关文档或示例能够解释特性如何工作的良好文档或示例。


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

正如文档中所述,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文档和语言参考。 但这些都不是很有帮助。


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

它的设计,意味着在这一点上,中插入多个全片( : ),以多维片扩大到所有方面。

示例

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

现在,您有一个2x2x2x2的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])

在您自己的实现中,您可以自由地忽略上述合同,并将其用于您认为合适的任何内容。


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

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

链接地址: http://www.djcxy.com/p/42775.html

上一篇: How do you use the ellipsis slicing syntax in Python?

下一篇: Complex switch statement