Многоточие используется в основном расширением числовой python , которое добавляет тип многомерного массива. Поскольку существует более одного измерения, нарезка становится более сложной, чем просто индекс начала и остановки; полезно иметь возможность разрезать и в нескольких измерениях. например, для массива 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]])
Здесь используется многоточие, чтобы указать заполнитель для остальных размеров массива, которые не указаны. Думайте об этом как об указании полного среза [:] для размеров, не указанных, поэтому
для трехмерного массива a[...,0]
совпадает с a[:,:,0]
, а для 4d a[:,:,:,0]
.
Обратите внимание, что фактический литерал Ellipsis (...) не может использоваться вне синтаксиса слайса в python2, хотя есть встроенный объект Ellipsis. Это то, что подразумевается под «Преобразованием элемента среза эллипса является встроенный объект с многоточием». то есть. «a[...]
» фактически является сахаром для «a[Ellipsis]
». В python3 ...
обозначает Ellipsis где угодно, поэтому вы можете написать:
>>> ...
Ellipsis
Если вы не используете numpy, вы можете в значительной степени игнорировать все упоминания об Ellipsis. Ни один из встроенных типов не использует его, так что на самом деле все, что вам нужно, это чтобы списки проходили один объект слайса, который содержит элементы "start
", "stop
" и "step
". а именно:
l[start:stop:step] # proper_slice syntax from the docs you quote.
эквивалентно звонку:
l.__getitem__(slice(start, stop, step))