Это недавно появилось в другом вопросе . Я уточню мой ответ оттуда:
Многоточие - это объект, который может отображаться в обозначениях срезов. Например:
myList[1:2, ..., 0]
Его интерпретация полностью зависит от того, что реализует функцию __getitem__
и видит там Ellipsis
объекты, но ее основное (и предполагаемое) использование - расширение числовой 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]])
Расширяя это далее, Ellipsis используется здесь, чтобы указать местозаполнитель для остальных измерений массива, не указанных. Думайте об этом как об указании полного среза [:]
для всех размеров в зазоре, который он помещает, поэтому для трехмерного массива a[...,0]
совпадает с a[:,:,0]
и для 4d, a[:,:,:,0]
, аналогично a[0,...,0]
равно a[0,:,:,0]
(хотя большое количество двоеточий в середине составляет полное число измерений в массиве).
Интересно, что в python3 литерал Ellipsis (...
) можно использовать вне синтаксиса слайса, поэтому вы можете написать:
>>> ...
Ellipsis
За исключением различных числовых типов, нет, я не думаю, что он используется. Насколько я знаю, он был добавлен исключительно для простого использования и не поддерживает ядро, кроме предоставления объекта и соответствующего синтаксиса. Объект, находящийся там, не требовал этого, но буквальная «...» поддержка срезов сделала.