Что делает объект Python Ellipsis?

SELECT  *
FROM    mytable mto
WHERE   EXISTS
        (
        SELECT  1
        FROM    mytable mti
        WHERE   mti.varchar_column = mto.varchar_column
        LIMIT 1, 1
        )

Этот запрос возвращает полные записи, а не только отдельные varchar_column.

Этот запрос не использует COUNT(*). Если имеется много дубликатов, COUNT(*) стоит дорого, и вам не нужно целое COUNT(*), вам просто нужно знать, есть ли две строки с одинаковым значением.

Имея индекс на varchar_column, конечно, значительно ускорит этот запрос.

421
задан Ashwini Chaudhary 25 February 2014 в 14:12
поделиться

3 ответа

Это недавно появилось в другом вопросе . Далее я подробно остановлюсь на моем ответе :

Эллипсис - это объект, который может появляться в обозначениях срезов. Например:

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]])

Расширение этого далее, Многоточие используется здесь, чтобы указать местозаполнитель для остальных размеров массива, не указанных. Думайте об этом как об указании полного среза [:] для всех размеров в зазоре, в котором он находится, поэтому для трехмерного массива a [..., 0] является аналогично a [:,:, 0] и для 4d, a [:,:,:, 0] , аналогично, a [0, ..., 0] - это a [0,:,:, 0] (хотя большое количество двоеточий в середине составляют полное число измерений в массиве).

Интересно, что в python3, литерал Ellipsis ( ... ) может использоваться вне синтаксиса среза, так что вы можете написать:

>>> ...
Ellipsis

За исключением различных числовых типов, нет, я не думаю, что он используется. Насколько я знаю, он был добавлен исключительно для простого использования и не поддерживает ядро, кроме предоставления объекта и соответствующего синтаксиса.

493
ответ дан 22 November 2019 в 22:53
поделиться

Из документации Python :

Этот объект используется расширенным слайсом обозначение (см. Python Reference Руководство по эксплуатации ). Не поддерживает никаких специальных операции. Есть ровно один объект эллипса, названный эллипсис ( встроенное имя).

34
ответ дан 22 November 2019 в 22:53
поделиться

Вы можете использовать Ellipsis самостоятельно, в пользовательских ситуациях нарезки, как это делал numpy, но он не используется ни в одном встроенном классе.

Я не знаю, был ли он добавлен специально для использования в Numpy, но я, конечно, не видел, чтобы он использовался в другом месте.

См. также: Как вы используете синтаксис нарезки многоточия в Python?

12
ответ дан 22 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: