Trong toán học, có các bộ và bộ đặt hàng [OSET].
- Đặt: Một thùng chứa không có thứ tự của các yếu tố duy nhất [được triển khai]
- OSET: Một container được đặt hàng gồm các yếu tố duy nhất [đã được thực hiện]
Trong Python, chỉ các bộ được thực hiện trực tiếp. Chúng ta có thể mô phỏng các OSET với các phím Dict thông thường [3.7+].
Được
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
Mã số
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
Thử nghiệm
Các bản sao được loại bỏ, thứ tự chèn được bảo tồn.
list[oset]
# [1, 2, 20, 6, 210]
Các hoạt động giống như thiết lập trên các khóa Dict.
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
Thông tin chi tiết
Lưu ý: Một cấu trúc không theo thứ tự không loại trừ các yếu tố được đặt hàng. Thay vào đó, trật tự được duy trì không được đảm bảo. Thí dụ:
assert {1, 2, 3} == {2, 3, 1} # sets [order is ignored]
assert [1, 2, 3] != [2, 3, 1] # lists [order is guaranteed]
Người ta có thể hài lòng khi phát hiện ra rằng một danh sách và multiset [MSET] là hai cấu trúc dữ liệu toán học hấp dẫn hơn:
- Danh sách: Một thùng chứa được đặt hàng của các phần tử cho phép bản sao [đã triển khai]
- MSET: Một thùng chứa không có thứ tự cho phép các bản sao [không kích thích]*
Bản tóm tắt
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
*Một multiset có thể được mô phỏng gián tiếp với
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
9, một ánh xạ giống như chính thức của bội số [số lượng]. Đối với Python 3.7 và CPython 3.6, Dict thường xuyên được xác nhận để bảo tồn trật tự và thực hiện tốt hơn so với đặt hàng.OrderedDict.
Để sử dụng một từ điển làm một tập hợp được đặt hàng để lọc ra các phần tử trùng lặp trong khi duy trì thứ tự, hãy mô phỏng một tập hợp được đặt hàng.
Không có chức năng tích hợp như một tập hợp được đặt hàng, nhưng nhiều gói có thể giúp bạn đặt hàng. Để sử dụng đơn đặt hàng trong Python, hãy sử dụng gói đặt hàng & nbsp;To use the Ordered Set in Python, use the ordered-set package.
Có các gói khác cũng có sẵn.
- Đặt hàng-SET [dựa trên Python]
- Đặt hàng [dựa trên CPython]
- collections-extended
- Boltons & nbsp; [Under & nbsp; iterutils.indexedset, Python dựa trên]
- Oset
- SortedContainers
Đặt hàng bằng cách sử dụng Boltons trong Python
Để làm việc với Boltons Indexset, bạn cần cài đặt & nbsp; Boltons & nbsp; gói.IndexSet, you need to install the boltons package.
python3 -m pip install boltons
Bây giờ, nhập mô -đun bằng mã sau.
from boltons.setutils import IndexedSet
Hãy để sử dụng các chỉ mục và chuyển hai danh sách làm đối số.IndexedSet and pass the two lists as arguments.
from boltons.setutils import IndexedSet data = IndexedSet[list[range[2]] + list[range[3, 6]]] print[data]
Đầu ra
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
0Bây giờ, hãy để thay đổi thứ tự của các danh sách trong khi chuyển chúng đến bảng chỉ mục.IndexedSet.
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
1Đầu ra
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
2Bây giờ, hãy để thay đổi thứ tự của các danh sách trong khi chuyển chúng đến bảng chỉ mục.
Bạn có thể thấy rằng thứ tự của bộ được bảo tồn hoàn hảo. Nó giữ lại thứ tự khi chúng được thêm vào bộ Python.
Đặt hàng trong Python bằng cách sử dụng SortedContainers sortedcontainers module provides a SortedSet for preserving the order of the set elements. Some benefits of using sortedcontainers include pure Python, fast-as-C implementations, 100% unit test coverage, and hours of stress testing.
Python & nbsp; Sắp xếp mô -đun cung cấp một bộ sắp xếp để bảo tồn thứ tự của các phần tử đã thiết lập. Một số lợi ích của việc sử dụng Sắp xếp bao gồm & NBSP; Python thuần túy, triển khai nhanh như-C, bảo hiểm thử nghiệm đơn vị 100% và giờ kiểm tra căng thẳng.sortedcontainers module using the pip package manager.
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
3Bây giờ, nhập mô -đun bằng mã sau.
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
4Hãy để sử dụng các chỉ mục và chuyển hai danh sách làm đối số.SortedSet[] method and pass the two lists as arguments.
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
5Đầu ra
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
6Bây giờ, hãy để thay đổi thứ tự của các danh sách trong khi chuyển chúng đến bảng chỉ mục.
Bạn có thể thấy rằng thứ tự của bộ được bảo tồn hoàn hảo. Nó giữ lại thứ tự khi chúng được thêm vào bộ Python.SortedSet.
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
7Đầu ra
oset = dict.fromkeys[a].keys[]
# dict_keys[[1, 2, 20, 6, 210]]
6Bây giờ, hãy để thay đổi thứ tự của các danh sách trong khi chuyển chúng đến bảng chỉ mục.
Bạn có thể thấy rằng thứ tự của bộ được bảo tồn hoàn hảo. Nó giữ lại thứ tự khi chúng được thêm vào bộ Python.
Đặt hàng trong Python bằng cách sử dụng SortedContainers
Python & nbsp; Sắp xếp mô -đun cung cấp một bộ sắp xếp để bảo tồn thứ tự của các phần tử đã thiết lập. Một số lợi ích của việc sử dụng Sắp xếp bao gồm & NBSP; Python thuần túy, triển khai nhanh như-C, bảo hiểm thử nghiệm đơn vị 100% và giờ kiểm tra căng thẳng.
Hãy để cài đặt & NBSP; Sắp xếpContainers & NBSP; Mô -đun bằng cách sử dụng Trình quản lý gói PIP.
Hãy để sử dụng phương thức Sắp xếp [] và chuyển hai danh sách làm đối số.