Ellipsis主要由numeric python扩展使用,它增加了一个多维数组类型。由于有多个维度,slicing 变得比仅仅一个开始和停止索引更复杂;能够在多个维度上切片也很有用。例如,给定一个 4x4 数组,左上角区域将由切片 "[:2,:2]" 定义
>>> a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> a[:2,:2] # top left
array([[1, 2],
[5, 6]])
此处使用省略号来指示未指定的其余数组维度的占位符。将其视为指示未指定维度的完整切片 [:],因此
对于 3d 数组,a[...,0] 与 a[:,:,0] 相同,对于 4d,a[:,:,:,0]。
请注意,虽然有一个内置的 Ellipsis 对象,但实际的 Ellipsis 文字 (...) 在 python2 中的切片语法之外是不可用的。这就是“省略号切片项的转换是内置的省略号对象”的意思。 IE。 “a[...]”实际上是“a[Ellipsis]”的糖。在python3中,...表示任何地方的省略号,所以你可以这样写:
>>> ...
Ellipsis
如果你不使用 numpy,你几乎可以忽略所有提到的省略号。没有任何内置类型使用它,所以您真正需要关心的是列表传递一个切片对象,其中包含“start”、“stop”和“step”成员。即:
l[start:stop:step] # proper_slice syntax from the docs you quote.
相当于调用:
l.__getitem__(slice(start, stop, step))