这提出了Python中的隐藏功能 ,但我看不到解释功能如何发挥良好的文档或例子。
Answer 1:
你会用它自己的类,因为没有内置的类可以使用它。
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文档和语言参考 。 但是,这些都不是很有益的。
Answer 2:
省略号用于切片高维数据结构。
它的设计,意味着在这一点上,中插入多个全片( :
),以多维片扩大到所有方面 。
例如 :
>>> 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])
在自己的实现,你可以自由地忽略上述合同,并用它为任何你认为合适的。
Answer 3:
这是另外一个使用了省略号,它有无关片:我经常用它与队列线程内通信,因为这预示着“做”的标志; 它的存在,它是一个对象,它是一个单件,它的名字的意思是“缺乏”,并且它不是过度使用无(其可以被放置在队列中作为普通数据流的一部分)。 因人而异。
Answer 4:
在其他的答案说,它可以被用来创建片。 有用,当你不想写了许多全片的符号( :
),或当你只是不知道什么是数组的维度被操纵。
我认为重要的是要强调,那就是缺少其他的答案是,它甚至可以在没有更多的维度来填充使用。
例:
>>> from numpy import arange
>>> a = arange(4).reshape(2,2)
这将导致错误:
>>> a[:,0,:]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array
这将工作:
a[...,0,:]
array([0, 1])
文章来源: How do you use the ellipsis slicing syntax in Python?