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

using iTextSharp.text;
using iTextSharp.text.pdf;
Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35);

byte[] pdfBytes;
using(var mem = new MemoryStream())
{
    using(PdfWriter wri = PdfWriter.GetInstance(doc, mem)) 
    {
        doc.Open();//Open Document to write
        Paragraph paragraph = new Paragraph("This is my first line using Paragraph.");
        Phrase pharse = new Phrase("This is my second line using Pharse.");
        Chunk chunk = new Chunk(" This is my third line using Chunk.");

        doc.Add(paragraph);

        doc.Add(pharse);

        doc.Add(chunk); 
    }
    pdfBytes = mem.ToArray();
}
143
задан Community 23 May 2017 в 11:47
поделиться

3 ответа

Вы использовали бы его в своем собственном классе, так как никакой встроенный класс не использует его.

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 , и ссылка языка . Но те не очень полезны.

95
ответ дан Daerdemandt 23 May 2017 в 11:47
поделиться

Замещающий знак используется для разрезания более многомерных структур данных.

Это разработано, чтобы означать в этой точке, вставить как много полных частей (:) для расширения многомерной части до всех размеров .

Пример :

>>> from numpy import arange
>>> a = arange(16).reshape(2,2,2,2)

Теперь, у Вас есть 4-мерная матрица порядка 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])

В собственных реализациях, Вы свободны проигнорировать упомянутый выше контракт и использовать его для того, что Вы считаете целесообразным.

213
ответ дан akdom 23 May 2017 в 11:47
поделиться
  • 1
    Строковые литералы @james входят в устройство хранения данных только для чтения. Но путем выполнения " символ [] s =..." you' ре, объявляющее массив и инициализирующее его к литералу, вместо того, чтобы получить указатель на литерал. – asveikau 23 October 2009 в 17:15

Это - другое использование для Эллипсиса, который не имеет никакого отношения к частям: Я часто использую его в связи внутрипотока с очередями как метка, которая сигнализирует "Сделанный"; это там, это - объект, это - одиночный элемент и его отсутствие "средств имени", и это не злоупотребивший Ни один (который мог быть помещен в очередь как часть нормального потока данных). YMMV.

70
ответ дан jonrsharpe 23 May 2017 в 11:47
поделиться
Другие вопросы по тегам:

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