Liệt kê các đối tượng

type PyListObject

Kiểu con này của PyObject đại diện cho một đối tượng danh sách Python.

PyTypeObject PyList_Type
Một phần của ABI ổn định.

Phiên bản PyTypeObject này đại diện cho loại danh sách Python. Đây là đối tượng tương tự như list trong lớp Python.

int PyList_Check(PyObject *p)
Thread safety: Atomic.

Trả về true nếu p là một đối tượng danh sách hoặc một thể hiện của một kiểu con của loại danh sách. Chức năng này luôn thành công.

int PyList_CheckExact(PyObject *p)
Thread safety: Atomic.

Trả về true nếu p là đối tượng danh sách nhưng không phải là phiên bản của kiểu con của loại danh sách. Chức năng này luôn thành công.

PyObject *PyList_New(Py_ssize_t len)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về danh sách mới có độ dài len nếu thành công hoặc NULL nếu thất bại.

Ghi chú

Nếu len lớn hơn 0, các mục của đối tượng danh sách trả về sẽ được đặt thành NULL. Do đó, bạn không thể sử dụng các hàm API trừu tượng như PySequence_SetItem() hoặc hiển thị đối tượng với mã Python trước khi đặt tất cả các mục thành một đối tượng thực bằng PyList_SetItem() hoặc PyList_SET_ITEM(). Các API sau đây là các API an toàn trước khi danh sách được khởi tạo đầy đủ: PyList_SetItem()PyList_SET_ITEM().

Py_ssize_t PyList_Size(PyObject *list)
Một phần của ABI ổn định. Thread safety: Atomic.

Trả về độ dài của đối tượng danh sách theo list; điều này tương đương với len(list) trên một đối tượng danh sách.

Py_ssize_t PyList_GET_SIZE(PyObject *list)
Thread safety: Atomic.

Tương tự như PyList_Size() nhưng không có tính năng kiểm tra lỗi.

PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định kể từ phiên bản 3.13. Thread safety: Atomic.

Trả đối tượng về vị trí index trong danh sách được list trỏ tới. Vị trí phải không âm; lập chỉ mục từ cuối danh sách không được hỗ trợ. Nếu index nằm ngoài giới hạn (<0 or >=len(list)), hãy trả về NULL và đặt ngoại lệ IndexError.

Added in version 3.13.

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định. Thread safety: Safe to call from multiple threads with external synchronization only.

Giống như PyList_GetItemRef(), nhưng trả về borrowed reference thay vì strong reference.

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể không hợp lệ nếu một luồng khác sửa đổi danh sách đồng thời. Thích PyList_GetItemRef(), trả về strong reference.

PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
Giá trị trả về: Tham chiếu mượn. Thread safety: Safe to call from multiple threads with external synchronization only.

Tương tự như PyList_GetItem() nhưng không có tính năng kiểm tra lỗi.

Ghi chú

Trong free-threaded build, borrowed reference được trả về có thể không hợp lệ nếu một luồng khác sửa đổi danh sách đồng thời. Thích PyList_GetItemRef(), trả về strong reference.

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
Một phần của ABI ổn định. Thread safety: Atomic.

Đặt mục ở chỉ mục index trong danh sách thành item. Trả về 0 khi thành công. Nếu index nằm ngoài giới hạn, hãy trả về -1 và đặt ngoại lệ IndexError.

Ghi chú

Hàm này "đánh cắp" tham chiếu đến item và loại bỏ tham chiếu đến một mục đã có trong danh sách ở vị trí bị ảnh hưởng.

void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
Thread safety: Safe to call from multiple threads with external synchronization only.

Dạng macro của PyList_SetItem() không kiểm tra lỗi. Điều này thường chỉ được sử dụng để điền vào danh sách mới không có nội dung trước đó.

Việc kiểm tra giới hạn được thực hiện dưới dạng xác nhận nếu Python được tích hợp trong debug mode hoặc with assertions.

Ghi chú

Macro này "đánh cắp" tham chiếu đến item và không giống như PyList_SetItem(), not loại bỏ tham chiếu đến bất kỳ mục nào đang được thay thế; mọi tham chiếu trong list tại vị trí i sẽ bị rò rỉ.

Ghi chú

Trong free-threaded build, macro này không có đồng bộ hóa nội bộ. Nó thường chỉ được sử dụng để điền vào danh sách mới mà không có chủ đề nào khác có tham chiếu đến danh sách. Nếu danh sách có thể được chia sẻ, thay vào đó hãy sử dụng PyList_SetItem(), sử dụng per-object lock.

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Chèn mục item vào danh sách list trước chỉ mục index. Trả về 0 nếu thành công; trả về -1 và đặt ngoại lệ nếu không thành công. Tương tự với list.insert(index, item).

int PyList_Append(PyObject *list, PyObject *item)
Một phần của ABI ổn định. Thread safety: Atomic.

Nối đối tượng item vào cuối danh sách list. Trả về 0 nếu thành công; trả về -1 và đặt ngoại lệ nếu không thành công. Tương tự với list.append(item).

PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về danh sách các đối tượng trong list chứa các đối tượng between lowhigh. Trả về NULL và đặt ngoại lệ nếu không thành công. Tương tự với list[low:high]. Lập chỉ mục từ cuối danh sách không được hỗ trợ.

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Đặt lát list giữa lowhigh thành nội dung của itemlist. Tương tự với list[low:high] = itemlist. Zz008zz có thể là NULL, biểu thị việc gán một danh sách trống (xóa lát). Trả về 0 nếu thành công, -1 nếu thất bại. Lập chỉ mục từ cuối danh sách không được hỗ trợ.

Ghi chú

Trong free-threaded build, khi itemlistlist, cả listitemlist đều bị khóa trong suốt thời gian hoạt động. Đối với các lần lặp khác (hoặc NULL), chỉ list bị khóa.

int PyList_Extend(PyObject *list, PyObject *iterable)
Thread safety: Safe for concurrent use on the same object.

Mở rộng list với nội dung của iterable. Điều này giống với PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable) và tương tự với list.extend(iterable) hoặc list += iterable.

Đưa ra một ngoại lệ và trả về -1 nếu list không phải là đối tượng list. Trả về 0 khi thành công.

Added in version 3.13.

Ghi chú

Trong free-threaded build, khi iterable là chế độ xem list, set, dict hoặc dict, cả listiterable (hoặc dict cơ bản của nó) đều bị khóa trong suốt thời gian hoạt động. Đối với các lần lặp khác, chỉ list bị khóa; iterable có thể được sửa đổi đồng thời bởi một luồng khác.

int PyList_Clear(PyObject *list)
Thread safety: Atomic.

Xóa tất cả các mục khỏi list. Điều này giống với PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL) và tương tự với list.clear() hoặc del list[:].

Đưa ra một ngoại lệ và trả về -1 nếu list không phải là đối tượng list. Trả về 0 khi thành công.

Added in version 3.13.

int PyList_Sort(PyObject *list)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Sắp xếp các mục của list vào đúng vị trí. Trả về 0 nếu thành công, -1 nếu thất bại. Điều này tương đương với list.sort().

Ghi chú

Trong free-threaded build, so sánh phần tử thông qua __lt__() có thể thực thi mã Python tùy ý, trong thời gian đó per-object lock có thể được phát hành tạm thời. Đối với các loại tích hợp (str, int, float), khóa không được nhả trong quá trình so sánh.

int PyList_Reverse(PyObject *list)
Một phần của ABI ổn định. Thread safety: Safe for concurrent use on the same object.

Đảo ngược các mục của list tại chỗ. Trả về 0 nếu thành công, -1 nếu thất bại. Điều này tương đương với list.reverse().

PyObject *PyList_AsTuple(PyObject *list)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định. Thread safety: Atomic.

Trả về một đối tượng tuple mới chứa nội dung của list; tương đương với tuple(list).