sequence.md
1> **Источник:** https://python-all.ru/3.1/c-api/sequence.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол последовательности89**int `PySequence_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**1011Возвращает1213`1`1415, если объект поддерживает протокол последовательности, и1617`0`1819в противном случае. Эта функция всегда завершается успешно.2021**Py\_ssize\_t `PySequence_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**2223**Py\_ssize\_t `PySequence_Length`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**2425Возвращает количество объектов в последовательности *o* в случае успеха и `-1` в случае ошибки. Для объектов, не поддерживающих протокол последовательности, эта функция эквивалентна выражению Python `len(o)`.2627**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_Concat`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**2829*Возвращаемое значение: новая ссылка.*3031Возвращает конкатенацию *o1* и *o2* в случае успеха и *NULL* в случае ошибки. Это эквивалент выражения Python `o1 + o2`.3233**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_Repeat`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *count*)**3435*Возвращаемое значение: новая ссылка.*3637Возвращает результат повторения объекта-последовательности *o* *count* раз или *NULL* в случае ошибки. Это эквивалент выражения Python `o * count`.3839**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_InPlaceConcat`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**4041*Возвращаемое значение: новая ссылка.*4243Возвращает конкатенацию *o1* и *o2* в случае успеха и *NULL* в случае ошибки. Операция выполняется *на месте*, если *o1* это поддерживает. Это эквивалент выражения Python `o1 += o2`.4445**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_InPlaceRepeat`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *count*)**4647*Возвращаемое значение: новая ссылка.*4849Возвращает результат повторения объекта-последовательности *o* *count* раз или *NULL* в случае ошибки. Операция выполняется *на месте*, если *o* это поддерживает. Это эквивалент выражения Python `o *= count`.5051**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_GetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i*)**5253*Возвращаемое значение: новая ссылка.*5455Возвращает *i*-й элемент *o* или *NULL* в случае ошибки. Это эквивалент выражения Python `o[i]`.5657**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_GetSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i1*, Py\_ssize\_t *i2*)**5859*Возвращаемое значение: новая ссылка.*6061Возвращает срез объекта-последовательности *o* между *i1* и *i2* или *NULL* в случае ошибки. Это эквивалент выражения Python `o[i1:i2]`.6263**int `PySequence_SetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**6465Присваивает объект6667*v*6869*i*7071-му элементу7273*o*7475. Возвращает7677`-1`7879в случае ошибки. Это эквивалент оператора Python8081`o[i] = v`8283. Эта функция8485*не*8687заимствует ссылку на8889*v*9091.9293**int `PySequence_DelItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i*)**9495Удаляет9697*i*9899-й элемент объекта100101*o*102103. Возвращает104105`-1`106107в случае ошибки. Это эквивалент оператора Python108109`del o[i]`110111.112113**int `PySequence_SetSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i1*, Py\_ssize\_t *i2*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**114115Присваивает объект-последовательность116117*v*118119срезу объекта-последовательности120121*o*122123от124125*i1*126127до128129*i2*130131. Это эквивалент оператора Python132133`o[i1:i2] = v`134135.136137**int `PySequence_DelSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i1*, Py\_ssize\_t *i2*)**138139Удаляет срез объекта-последовательности140141*o*142143от144145*i1*146147до148149*i2*150151. Возвращает152153`-1`154155в случае ошибки. Это эквивалент оператора Python156157`del o[i1:i2]`158159.160161**Py\_ssize\_t `PySequence_Count`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**162163Возвращает количество вхождений164165*value*166167в168169*o*170171, то есть количество ключей, для которых выполняется условие172173`o[key] == value`174175. В случае ошибки возвращает176177`-1`178179. Это эквивалент выражения Python180181`o.count(value)`182183.184185**int `PySequence_Contains`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**186187Определяет, содержит ли188189*o*190191значение192193*value*194195. Если элемент196197*o*198199равен200201*value*202203, возвращает204205`1`206207, в противном случае возвращает208209`0`210211. При ошибке возвращает212213`-1`214215. Это эквивалент выражения Python216217`value in o`218219.220221**Py\_ssize\_t `PySequence_Index`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**222223Возвращает первый индекс224225*i*226227, для которого выполняется условие228229`o[i] == value`230231. При ошибке возвращает232233`-1`234235. Это эквивалент выражения Python236237`o.index(value)`238239.240241**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_List`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**242243*Возвращаемое значение: новая ссылка.*244245Возвращает объект списка с тем же содержимым, что и произвольная последовательность *o*. Гарантируется, что возвращённый список является новым.246247**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_Tuple`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**248249*Возвращаемое значение: новая ссылка.*250251Возвращает объект кортежа с тем же содержимым, что и произвольная последовательность *o*, или *NULL* в случае ошибки. Если *o* уже является кортежем, будет возвращена новая ссылка; в противном случае будет создан кортеж с соответствующим содержимым. Это эквивалентно выражению Python `tuple(o)`.252253**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_Fast`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, const char *\*m*)**254255*Возвращаемое значение: новая ссылка.*256257Возвращает последовательность *o* в виде кортежа, если только она уже не является кортежем или списком – в этом случае возвращается *o*. Для доступа к элементам результата используйте [`PySequence_Fast_GET_ITEM()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Fast_GET_ITEM). В случае ошибки возвращает *NULL*. Если объект не является последовательностью, возбуждает [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError) с текстом сообщения *m*.258259**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_Fast_GET_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i*)**260261*Возвращаемое значение: заимствованная ссылка.*262263Возвращает *i*-й элемент *o*, при условии, что *o* был возвращён функцией [`PySequence_Fast()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Fast), *o* не равен *NULL* и *i* находится в допустимых пределах.264265**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\*\* `PySequence_Fast_ITEMS`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**266267Возвращает базовый массив указателей на PyObject. Предполагается, что *o* был возвращён функцией [`PySequence_Fast()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Fast) и *o* не равен *NULL*.268269Примечание: если список изменяет размер, перераспределение может переместить массив элементов. Поэтому используйте указатель на внутренний массив только в контекстах, где последовательность не может измениться.270271**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySequence_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, Py\_ssize\_t *i*)**272273*Возвращаемое значение: новая ссылка.*274275Возвращает *i*-й элемент *o* или *NULL* при ошибке. Макроформа [`PySequence_GetItem()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_GetItem), но без проверки `PySequence_Check(o)()` и без корректировки для отрицательных индексов.276277**Py\_ssize\_t `PySequence_Fast_GET_SIZE`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**278279Возвращает длину280281*o*282283, при условии, что284285*o*286287был возвращён функцией288289[`PySequence_Fast()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Fast)290291и292293*o*294295не равен296297*NULL*298299. Размер также можно получить, вызвав300301[`PySequence_Size()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Size)302303для304305*o*306307, но308309[`PySequence_Fast_GET_SIZE()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_Fast_GET_SIZE)310311быстрее, поскольку может предполагать, что312313*o*314315является списком или кортежем.316