Tập hợp là tập hợp có thể thay đổi của các đối tượng có thể băm riêng biệt, giống như danh sách và bộ. Nó là một tập hợp các đối tượng không có thứ tự, nghĩa là nó không ghi lại vị trí phần tử hoặc thứ tự chèn và do đó không thể truy cập các phần tử bằng chỉ mục
Tập hợp này là một triển khai Python của tập hợp trong Toán học. Một đối tượng tập hợp có các phương thức phù hợp để thực hiện các phép toán tập hợp toán học như hợp, giao, hiệu, v.v.
Một đối tượng tập hợp chứa một hoặc nhiều mục, không nhất thiết phải cùng loại, được phân tách bằng dấu phẩy và đặt trong dấu ngoặc nhọn {}. Sau đây xác định một đối tượng thiết lập với các số chẵn
Thí dụ. Python đặt đối tượng
even_nums = {2, 4, 6, 8, 10} # set of even numbers
emp = {1, 'Steve', 10.5, True} # set of different objects
Một bộ không lưu trữ các đối tượng trùng lặp. Ngay cả khi một đối tượng được thêm vào nhiều lần bên trong dấu ngoặc nhọn, thì chỉ một bản sao được giữ trong đối tượng đã đặt. Do đó, các hoạt động lập chỉ mục và cắt không thể được thực hiện trên một đối tượng đã đặt
Thí dụ. Tập hợp các yếu tố riêng biệt
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
Thứ tự của các phần tử trong tập hợp không nhất thiết phải giống với thứ tự được đưa ra tại thời điểm gán. Python tối ưu hóa cấu trúc của một tập hợp để thực hiện các phép toán trên nó, như được định nghĩa trong toán học
Chỉ các đối tượng bất biến [và có thể băm] mới có thể là một phần của đối tượng đã đặt. Các số [số nguyên, số float, cũng như số phức], chuỗi và các đối tượng tuple được chấp nhận, nhưng các đối tượng set, list và dictionary thì không
Thí dụ. Đặt phần tử
>>> myset = {[10,10], 10, 20} # valid
>>> myset
{10, 20, [10, 10]}
>>> myset = {[10, 10], 10, 20} # can't add a list
Traceback [most recent call last]:
File "", line 1, in
myset = {[10, 10], 10, 20}
TypeError: unhashable type: 'list'
>>> myset = { {10, 10}, 10, 20} # can't add a set
Traceback [most recent call last]:
File "", line 1, in
myset = { {10, 10}, 10, 20}
TypeError: unhashable type: 'set'
Trong ví dụ trên,
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
4 là một bộ, do đó nó trở thành một phần của tập hợp. Tuy nhiên, >>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
5 là một danh sách, do đó một thông báo lỗi hiển thị nói rằng danh sách này không thể băm được. [Băm là một cơ chế trong khoa học máy tính cho phép tìm kiếm nhanh hơn các đối tượng trong bộ nhớ của máy tính. ]Mặc dù các đối tượng có thể thay đổi không được lưu trữ trong một tập hợp, nhưng chính tập hợp đó là một đối tượng có thể thay đổi
Sử dụng hàm set[] để tạo một tập rỗng. Dấu ngoặc nhọn rỗng sẽ tạo một từ điển trống thay vì một tập hợp trống
Thí dụ. Tạo một tập rỗng
>>> emp = {} # creates an empty dictionary
>>> type[emp]
>>> s = set[] # creates an empty set
>>> type[s]
Hàm set[] cũng được sử dụng để chuyển đổi đối tượng chuỗi, bộ dữ liệu hoặc từ điển thành đối tượng đã đặt, như minh họa bên dưới
Thí dụ. Chuyển đổi Sequence thành Set
>>> s = set['Hello'] # converts string to set
>>> s
{'l', 'H', 'o', 'e'}
>>> s = set[[1,2,3,4,5]] # converts tuple to set
>>> s
{1, 2, 3, 4, 5}
>>> d = {1:'One', 2: 'Two'}
>>> s = set[d] # converts dict to set
>>> s
{1, 2}
Sửa đổi phần tử tập hợp
Sử dụng các hàm set tích hợp add[], remove[] hoặc update[] để sửa đổi set collection
Thí dụ
>>> s = set[] # creates an empty set
>>> s.add[10] # add an element
>>> s.add[20]
>>> s.add[30]
>>> s
{10, 20, 30}
>>> primeNums = {2, 3, 5, 7}
>>> s.update[primeNums] # update set with another set
>>> s
{2, 3, 20, 5, 7, 10, 30}
>>> s.remove[2] # remove an element
>>> s
{3, 20, 5, 7, 10, 30}
Đặt hoạt động
Như đã đề cập trước đó, kiểu dữ liệu tập hợp trong Python triển khai như tập hợp được định nghĩa trong toán học. Có thể thực hiện nhiều hoạt động thiết lập khác nhau. nhà điều hành. , &, - và ^ lần lượt thực hiện các phép toán hợp, giao, hiệu và hiệu đối xứng. Mỗi toán tử này có một phương thức tương ứng được liên kết với lớp tập hợp dựng sẵn
OperationExampleUnion. Trả về một tập hợp mới với các phần tử từ cả hai tập hợp.
Toán tử. .
Phương thức. bộ. công đoàn[]
>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1|s2
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1.union[s2]
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s2.union[s1]
{1, 2, 3, 4, 5, 6, 7, 8}
Giao lộ. Trả về một tập hợp mới chứa các phần tử chung cho cả hai tập hợp. Toán tử. &
Phương pháp. bộ. giao lộ[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
0>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
1Sự khác biệt. Trả về một tập hợp chỉ chứa các phần tử trong tập hợp đầu tiên, nhưng không có trong tập hợp thứ hai. Toán tử. -
Phương thức. bộ. khác biệt[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
0>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
1Sự khác biệt đối xứng. Trả về một tập hợp bao gồm các phần tử trong cả hai tập hợp, không bao gồm các phần tử chung. Toán tử. ^
Phương thức. bộ. symmetric_difference[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
2>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
3Đặt phương thức
Bảng sau liệt kê các phương thức set tích hợp
MethodDescriptionset. add[]Thêm một phần tử vào tập hợp. Nếu một phần tử đã tồn tại trong tập hợp, thì nó không thêm phần tử đó. bộ. clear[] Loại bỏ tất cả các phần tử khỏi tập hợp. bộ. copy[] Trả về một bản sao nông của tập hợp. bộ. khác biệt [] Trả về tập hợp mới với các phần tử duy nhất không có trong tập hợp khác được truyền dưới dạng tham số. bộ. Difference_update[] Cập nhật tập hợp mà phương thức được gọi với các phần tử phổ biến trong tập hợp khác được truyền dưới dạng đối số. bộ. discard[] Xóa một phần tử cụ thể khỏi tập hợp. bộ. giao điểm [] Trả về một tập hợp mới với các phần tử phổ biến trong các tập hợp đã cho. bộ. giao điểm_update[] Cập nhật tập hợp mà phương thức instersection_update[] được gọi, với các phần tử chung giữa các tập hợp đã chỉ định. bộ. isdisjoint[] Trả về true nếu các tập hợp đã cho không có phần tử chung. Các tập hợp là rời nhau khi và chỉ khi giao của chúng là tập hợp rỗng. bộ. issubset[] Trả về true nếu tập hợp [trên đó issubset[] được gọi] chứa mọi phần tử của tập hợp khác được truyền dưới dạng đối số. bộ. pop[] Loại bỏ và trả về một phần tử ngẫu nhiên từ tập hợp. bộ. remove[] Xóa phần tử đã chỉ định khỏi tập hợp. Nếu không tìm thấy phần tử được chỉ định, hãy đưa ra lỗi. bộ. symmetric_difference[] Trả về một tập hợp mới với các phần tử riêng biệt được tìm thấy trong cả hai tập hợp. bộ. symmetric_difference_update[] Cập nhật tập hợp mà phương thức instersection_update[] gọi, với các phần tử phổ biến giữa các tập hợp đã chỉ định. bộ. union[] Trả về một tập hợp mới với các phần tử riêng biệt từ tất cả các tập hợp đã cho. bộ. update[] Cập nhật tập hợp bằng cách thêm các phần tử riêng biệt từ một hoặc nhiều lần lặp đã qua