Có quyết định thiết kế Python (PEP) ngăn không cho một vùng chứa đã sắp xếp được thêm vào Python không?
( OrderedDict
không phải là một vùng chứa được sắp xếp vì nó được sắp xếp theo thứ tự chèn.)
Có quyết định thiết kế Python (PEP) ngăn không cho một vùng chứa đã sắp xếp được thêm vào Python không?
( OrderedDict
không phải là một vùng chứa được sắp xếp vì nó được sắp xếp theo thứ tự chèn.)
Câu trả lời:
Đó là một quyết định thiết kế có ý thức từ phía Guido (anh ấy thậm chí hơi miễn cưỡng về việc bổ sung collections
mô-đun). Mục tiêu của ông là duy trì "một cách rõ ràng để làm điều đó" khi nói đến việc lựa chọn kiểu dữ liệu cho các ứng dụng.
Khái niệm cơ bản là nếu người dùng đủ tinh tế để nhận ra rằng các loại nội trang không phải là giải pháp phù hợp cho vấn đề của họ, thì họ cũng có nhiệm vụ tìm một thư viện bên thứ ba thích hợp.
Do danh sách + sắp xếp, danh sách + heapq và list + bisect bao gồm nhiều trường hợp sử dụng mà nếu không sẽ dựa vào cấu trúc dữ liệu đã được sắp xếp vốn có và các gói như Blist tồn tại, không có ổ đĩa lớn để thêm phức tạp hơn trong không gian này để thư viện tiêu chuẩn.
Theo một số cách, nó tương tự như thực tế là không có mảng đa chiều trong thư viện tiêu chuẩn, thay vào đó hãy nhường nhiệm vụ đó cho NumPy folks.
collections.Counter
có thể được sử dụng như tập hợp được sắp xếp. Mặc dù nó có thể không hiệu quả.
collections.Counter
không được sắp xếp và không thích hợp để đại diện cho một tập hợp được sắp xếp.
dict
là một bảng băm.
Ngoài ra còn có một con trăn sortedcontainers mô-đun mà dụng cụ được sắp xếp danh sách, dict, và các loại thiết lập. Nó rất giống với Blist nhưng được triển khai bằng Python thuần túy và trong hầu hết các trường hợp nhanh hơn .
>>> from sortedcontainers import SortedSet
>>> ss = SortedSet([3, 7, 2, 2])
>>> ss
SortedSet([2, 3, 7])
Nó cũng có chức năng không phổ biến đối với các gói khác:
>>> from sortedcontainers import SortedDict
>>> sd = SortedDict((num, num) for num in range(100000))
>>> sd.iloc[-5] # Lookup the fifth-to-last key.
99995
Tuyên bố từ chối trách nhiệm: Tôi là tác giả của mô-đun điều khiển được sắp xếp.
Danh sách Python được sắp xếp theo thứ tự. Nếu bạn sắp xếp chúng, chúng vẫn như vậy. Trong Python 2.7, một OrderedDict
kiểu đã được thêm vào để duy trì một từ điển có thứ tự rõ ràng.
Python cũng có các bộ (một tập hợp trong đó các thành viên phải là duy nhất), nhưng theo định nghĩa thì chúng không có thứ tự. Sắp xếp một tập hợp chỉ trả về a list
.