Set là một trong 4 kiểu dữ liệu tích hợp trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, 3 kiểu còn lại là List, Tuple và Dictionary, tất cả đều có chất lượng và cách sử dụng khác nhau
Một bộ là một bộ sưu tập không có thứ tự, không thể thay đổi* và không được lập chỉ mục
* Ghi chú. Các mục trong bộ không thể thay đổi, nhưng bạn có thể xóa các mục và thêm các mục mới
Các tập hợp được viết bằng dấu ngoặc nhọn
Thí dụ
Tạo một bộ
thisset = {"apple", "banana", "cherry"}
print[thisset]
Ghi chú. Các bộ không có thứ tự, vì vậy bạn không thể chắc chắn các mục sẽ xuất hiện theo thứ tự nào
Đặt mục
Các mục của bộ không có thứ tự, không thể thay đổi và không cho phép các giá trị trùng lặp
không có thứ tự
Không có thứ tự có nghĩa là các mục trong một bộ không có thứ tự xác định
Các mục trong bộ có thể xuất hiện theo một thứ tự khác mỗi khi bạn sử dụng chúng và không thể được gọi bằng chỉ mục hoặc khóa
không thể thay đổi
Các mục trong bộ không thể thay đổi, nghĩa là chúng ta không thể thay đổi các mục sau khi tạo bộ
Sau khi một bộ được tạo, bạn không thể thay đổi các mục của nó, nhưng bạn có thể xóa các mục và thêm các mục mới
Bản sao không được phép
Bộ không thể có hai mục có cùng giá trị
Thí dụ
Các giá trị trùng lặp sẽ bị bỏ qua
thisset = {"táo", "chuối", "anh đào", "táo"}
in [bộ này]
Tự mình thử »Lấy chiều dài của một tập hợp
Để xác định một bộ có bao nhiêu mục, hãy sử dụng hàm
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}81
Thí dụ
Lấy số lượng mặt hàng trong một bộ
thisset = {"táo", "chuối", "anh đào"}
in[len[thisset]]
Tự mình thử »Đặt mục - Kiểu dữ liệu
Các mục của tập hợp có thể thuộc bất kỳ loại dữ liệu nào
Thí dụ
Các kiểu dữ liệu chuỗi, int và boolean
set1 = {"táo", "chuối", "anh đào"}
set2 = {1, 5, 7, 9, 3}
set3 = {True, False, False}
Một tập hợp có thể chứa các loại dữ liệu khác nhau
Thí dụ
Một tập hợp có chuỗi, số nguyên và giá trị boolean
set1 = {"abc", 34, Đúng, 40, "nam"}
Tự mình thử »loại hình[]
Theo quan điểm của Python, các tập hợp được định nghĩa là các đối tượng có kiểu dữ liệu 'set'
Thí dụ
Kiểu dữ liệu của một tập hợp là gì?
myset = {"apple", "banana", "cherry"}
print[type[myset]]
Bộ xây dựng []
Cũng có thể sử dụng hàm tạo set[] để tạo một tập hợp
Thí dụ
Sử dụng hàm tạo set[] để tạo một tập hợp
thisset = set[["apple", "banana", "cherry"]] # lưu ý dấu ngoặc tròn kép
print[thisset]
Bộ sưu tập Python [Mảng]
Có bốn kiểu dữ liệu tập hợp trong ngôn ngữ lập trình Python
- Danh sách là một bộ sưu tập được sắp xếp theo thứ tự và có thể thay đổi. Cho phép các thành viên trùng lặp
- Tuple là một bộ sưu tập được sắp xếp và không thể thay đổi. Cho phép các thành viên trùng lặp
- Set là một bộ sưu tập không có thứ tự, không thể thay đổi* và không được lập chỉ mục. Không có thành viên trùng lặp
- Từ điển là một bộ sưu tập được sắp xếp theo thứ tự ** và có thể thay đổi. Không có thành viên trùng lặp
*Các mục trong bộ không thể thay đổi, nhưng bạn có thể xóa các mục và thêm các mục mới
** Kể từ phiên bản Python 3. 7, từ điển được đặt hàng. Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự
Khi chọn một loại bộ sưu tập, sẽ rất hữu ích khi hiểu các thuộc tính của loại đó. Việc chọn đúng loại cho một tập dữ liệu cụ thể có thể đồng nghĩa với việc giữ nguyên ý nghĩa và, điều đó có thể đồng nghĩa với việc tăng hiệu quả hoặc tính bảo mật
Tập hợp là loại dữ liệu bộ sưu tập không có thứ tự, có thể lặp lại, có thể thay đổi và không có phần tử trùng lặp.
Tập hợp được đại diện bởi { } [các giá trị được đặt trong dấu ngoặc nhọn]
Ưu điểm chính của việc sử dụng một tập hợp, trái ngược với một danh sách, là nó có một phương pháp được tối ưu hóa cao để kiểm tra xem một phần tử cụ thể có được chứa trong tập hợp hay không. Điều này dựa trên cấu trúc dữ liệu được gọi là bảng băm. Vì các tập hợp không có thứ tự nên chúng ta không thể truy cập các mục bằng cách sử dụng chỉ mục như chúng ta làm trong danh sách
Ví dụ về Bộ
Python3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}82
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}2
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}4
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}2
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}8
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}9
đầu ra
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
Phương thức set[] của Python được sử dụng để truyền kiểu trong Python
Python3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}10
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}13_______114
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}15
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}17
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}19
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}10
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}12
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}13
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}14
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}15
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}12
đầu ra
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}
Bộ đông lạnh Python
Các tập hợp cố định trong Python là các đối tượng bất biến, chỉ hỗ trợ các phương thức và toán tử tạo ra kết quả mà không ảnh hưởng đến tập hợp cố định hoặc các tập hợp mà chúng được áp dụng. Nó có thể được thực hiện với phương thức freezeset[] trong Python
Mặc dù các phần tử của tập hợp có thể được sửa đổi bất kỳ lúc nào, nhưng các phần tử của tập hợp cố định vẫn giữ nguyên sau khi tạo.
Nếu không có tham số nào được truyền, nó sẽ trả về một bộ đóng băng trống
con trăn
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}19
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}20
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}21
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}22
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}13
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}14
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}15
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}17
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}19
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}10
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53____454
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}57
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}58
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}59
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}31_______114____533
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}35
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}37
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}10
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53____631
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}34
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}35
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}36
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}37
đầu ra
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
Làm việc nội bộ của Set
Điều này dựa trên cấu trúc dữ liệu được gọi là bảng băm.
Nếu nhiều giá trị xuất hiện ở cùng một vị trí chỉ mục, thì giá trị đó sẽ được thêm vào vị trí chỉ mục đó để tạo thành Danh sách được liên kết. Trong, Bộ Python được triển khai bằng cách sử dụng từ điển với các biến giả, trong đó các sinh vật chính mà các thành viên đặt với mức độ tối ưu hóa cao hơn đối với độ phức tạp về thời gian.
Đặt thực hiện
Đặt với nhiều hoạt động trên một HashTable duy nhất
Phương pháp cho Sets
Thêm phần tử vào Python Sets
Việc chèn vào tập hợp được thực hiện thông qua tập hợp. add[], trong đó một giá trị bản ghi thích hợp được tạo để lưu trữ trong bảng băm. Giống như kiểm tra một mục, tôi. e. , O[1] trung bình. Tuy nhiên, trong trường hợp xấu nhất, nó có thể trở thành O[n]
Python3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}38
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}39
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}30
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}31
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}32
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}35
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}37
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}39
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53____1823
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}824
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}826
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}829
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}00
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}01
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}02
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}03
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}05
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}06
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}07
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}08
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}09
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}10
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}12
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}14
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}15
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16____017
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53____020
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}824
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}826
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}829
đầu ra
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
Hoạt động liên kết trên Bộ Python
Hai tập hợp có thể được hợp nhất bằng hàm union[] hoặc. nhà điều hành. Cả hai giá trị Bảng băm đều được truy cập và duyệt qua với thao tác hợp nhất được thực hiện trên chúng để kết hợp các phần tử, đồng thời loại bỏ các phần tử trùng lặp. Độ phức tạp thời gian của điều này là O[len[s1] + len[s2]] trong đó s1 và s2 là hai tập hợp cần thực hiện phép hợp.
Python3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}27
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}28
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}29
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}32
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}35
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}37
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}37
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}39
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}42
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}44
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}46
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}49
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}51
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}54
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}55
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}57
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}53____060
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}63
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}64
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}65
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}55
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}68
_______211____453____071
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}16
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}11
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}63
đầu ra
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}2
Hoạt động giao lộ trên Python Sets
Điều này có thể được thực hiện thông qua toán tử giao nhau[] hoặc và. Các phần tử chung được chọn. Chúng tương tự như việc lặp lại các danh sách Hash và kết hợp các giá trị giống nhau trên cả hai Bảng. Độ phức tạp về thời gian của điều này là O[min[len[s1], len[s2]] trong đó s1 và s2 là hai tập hợp cần thực hiện phép hợp
Python3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}75
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}76
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}77
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}78
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}0
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}1
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}12
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}191
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}100
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}195
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}91
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}3
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}14
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}7