리스트 객체¶
-
PyTypeObject PyList_Type¶
- …의 일부 안정 ABI.
이
PyTypeObject인스턴스는 파이썬 리스트 형을 나타냅니다. 이것은 파이썬 계층의list와 같은 객체입니다.
-
int PyList_Check(PyObject *p)¶
- Thread safety: Atomic.
p가 리스트 객체나 리스트 형의 서브 형 인스턴스면 참을 반환합니다. 이 함수는 항상 성공합니다.
-
int PyList_CheckExact(PyObject *p)¶
- Thread safety: Atomic.
p가 리스트 객체이지만 리스트 형의 서브 형의 인스턴스가 아니면 참을 반환합니다. 이 함수는 항상 성공합니다.
-
PyObject *PyList_New(Py_ssize_t len)¶
- 반환값: 새 참조. …의 일부 안정 ABI. Thread safety: Atomic.
성공하면 길이 len 인 새 리스트를, 실패하면
NULL을 반환합니다.참고
len이 0보다 크면, 반환된 리스트 객체의 항목은
NULL로 설정됩니다. 따라서 모든 항목을PyList_SetItem()이나PyList_SET_ITEM()으로 실제 객체로 설정하기 전에PySequence_SetItem()와 같은 추상 API 함수를 사용하거나 파이썬 코드에 객체를 노출할 수 없습니다. 다음 API는 리스트가 완전히 초기화되기 전의 안전한 API 입니다:PyList_SetItem()과PyList_SET_ITEM().
-
Py_ssize_t PyList_Size(PyObject *list)¶
- …의 일부 안정 ABI. Thread safety: Atomic.
list에서 리스트 객체의 길이를 반환합니다; 이는 리스트 객체에 대한
len(list)와 동등합니다.
-
Py_ssize_t PyList_GET_SIZE(PyObject *list)¶
- Thread safety: Atomic.
PyList_Size()와 유사하지만, 에러 검사가 없습니다.
-
PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)¶
- 반환값: 새 참조. …의 일부 안정 ABI 버전 3.13 이후로. Thread safety: Atomic.
list가 가리키는 리스트에서 index 위치의 객체를 반환합니다. 위치는 음수가 아니어야 합니다; 리스트의 끝에서부터의 인덱싱은 지원되지 않습니다. index가 범위를 벗어나면 (
<0 or >=len(list)),NULL을 반환하고IndexError예외를 설정합니다.Added in version 3.13.
-
PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)¶
- 반환값: 빌린 참조. …의 일부 안정 ABI. Thread safety: Safe to call from multiple threads with external synchronization only.
PyList_GetItemRef()와 유사하지만, strong reference 대신 borrowed reference 를 반환합니다.참고
free-threaded build 에서, 다른 스레드가 동시에 리스트를 수정하는 경우 반환된 borrowed reference 가 무효화될 수 있습니다. strong reference 를 반환하는
PyList_GetItemRef()를 사용하는 것이 좋습니다.
-
PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)¶
- 반환값: 빌린 참조. Thread safety: Safe to call from multiple threads with external synchronization only.
PyList_GetItem()와 유사하지만, 에러 검사가 없습니다.참고
free-threaded build 에서, 다른 스레드가 동시에 리스트를 수정하는 경우 반환된 borrowed reference 가 무효화될 수 있습니다. strong reference 를 반환하는
PyList_GetItemRef()를 사용하는 것이 좋습니다.
-
int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)¶
- …의 일부 안정 ABI. Thread safety: Atomic.
리스트의 인덱스 index에 있는 항목을 item으로 설정합니다. 성공하면
0을 반환합니다. index가 범위를 벗어나면,-1을 반환하고IndexError예외를 설정합니다.참고
이 함수는 오류가 발생하더라도 item 에 대한 참조를 “steals “합니다. 성공 시에는 영향을 받는 위치에 이미 존재하던 항목의 참조를 버립니다(해당 항목이
NULL이 아니었을 경우).
-
void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)¶
- Thread safety: Safe to call from multiple threads with external synchronization only.
에러 검사 없는
PyList_SetItem()의 매크로 형식. 일반적으로 이전 내용이 없는 새 리스트를 채우는 데 사용됩니다.Python이 debug mode 또는
with assertions로 빌드된 경우 경계 검사가 단언문(assertion)으로 수행됩니다.참고
이 매크로는 item 에 대한 참조를 “steals “하며,
PyList_SetItem()과 달리 교체되는 항목에 대한 참조를 버리지 않습니다. 즉, list 의 i 위치에 있는 모든 참조가 누수될 수 있습니다.참고
free-threaded build 에서 이 매크로는 내부 동기화 기능이 없습니다. 일반적으로 다른 스레드가 해당 리스트에 대한 참조를 가지고 있지 않은 경우에만 새로운 리스트를 채우는 용도로 사용됩니다. 리스트가 공유될 가능성이 있는 경우에는 per-object lock 을 사용하는
PyList_SetItem()을 대신 사용하십시오.
-
int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)¶
- …의 일부 안정 ABI. Thread safety: Safe for concurrent use on the same object.
항목 item을 리스트 list의 인덱스 index 앞에 삽입합니다. 성공하면
0을 반환합니다; 실패하면-1을 반환하고 예외를 설정합니다.list.insert(index, item)에 해당합니다.
-
int PyList_Append(PyObject *list, PyObject *item)¶
- …의 일부 안정 ABI. Thread safety: Atomic.
리스트 list의 끝에 객체 item을 추가합니다. 성공하면
0을 반환합니다; 실패하면-1을 반환하고 예외를 설정합니다.list.append(item)에 해당합니다.
-
PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)¶
- 반환값: 새 참조. …의 일부 안정 ABI. Thread safety: Atomic.
list에서 low 와 high 사이에있는 객체들을 포함하는 리스트를 반환합니다. 실패하면
NULL을 반환하고 예외를 설정합니다.list[low:high]에 해당합니다. 리스트 끝에서부터의 인덱싱은 지원되지 않습니다.
-
int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶
- …의 일부 안정 ABI. Thread safety: Safe for concurrent use on the same object.
low와 high 사이의 list슬라이스를 itemlist의 내용으로 설정합니다.
list[low:high] = itemlist에 해당합니다. itemlist는NULL일 수 있는데, 빈 리스트의 대입을 나타냅니다 (슬라이스 삭제). 성공하면0을, 실패하면-1을 반환합니다. 리스트 끝에서부터의 인덱싱은 지원되지 않습니다.참고
In the free-threaded build, when itemlist is a
list, both list and itemlist are locked for the duration of the operation. For other iterables (orNULL), only list is locked.
-
int PyList_Extend(PyObject *list, PyObject *iterable)¶
- Thread safety: Safe for concurrent use on the same object.
iterable 의 내용을 list 에 추가하여 확장합니다. 이는
PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)과 동일하며,list.extend(iterable)또는list += iterable과 유사한 동작을 합니다.Raise an exception and return
-1if list is not alistobject. Return 0 on success.Added in version 3.13.
참고
In the free-threaded build, when iterable is a
list,set,dict, or dict view, both list and iterable (or its underlying dict) are locked for the duration of the operation. For other iterables, only list is locked; iterable may be concurrently modified by another thread.
-
int PyList_Clear(PyObject *list)¶
- Thread safety: Atomic.
list 에서 모든 항목을 제거합니다. 이는
PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL)와 동일하며,list.clear()또는del list[:]와 유사하게 동작합니다.Raise an exception and return
-1if list is not alistobject. Return 0 on success.Added in version 3.13.
-
int PyList_Sort(PyObject *list)¶
- …의 일부 안정 ABI. Thread safety: Safe for concurrent use on the same object.
list 항목을 제자리에서 정렬합니다. 성공하면
0을, 실패하면-1을 반환합니다. 이것은list.sort()와 동등합니다.참고
free-threaded build 에서
__lt__()를 통한 요소 비교는 임의의 파이썬 코드를 실행할 수 있으며, 이 과정에서 per-object lock 이 일시적으로 해제될 수 있습니다. 내장 타입(str,int,float)은 비교 중에 잠금이 해제되지 않습니다.
-
int PyList_Reverse(PyObject *list)¶
- …의 일부 안정 ABI. Thread safety: Safe for concurrent use on the same object.
list의 항목을 제자리에서 뒤집습니다. 성공하면
0을, 실패하면-1을 반환합니다. 이것은list.reverse()와 동등합니다.