Bộ

Trong toán học, có một thứ gọi là tập hợp (hay lý thuyết tập hợp). Có lẽ bạn thậm chí đã học chúng trong một khóa học toán. Bạn thậm chí có thể quen thuộc với biểu đồ Venn.
Trong thực tế, một tập hợp có thể được coi đơn giản là một tập hợp các đối tượng riêng lẻ được xác định rõ ràng, được gọi là các phần tử hoặc phần tử.
Việc nhóm các đối tượng thành một tập hợp có thể hữu ích trong lập trình và Python cung cấp cho chúng ta kiểu tích hợp sẵn set.

Bộ (loại bộ) khác với các loại đối tượng khác ở các thao tác duy nhất có thể được thực hiện trên chúng.

Loại tích hợp sẵn set trong Python có các đặc điểm sau:
    Các
  • phần tử của một tập hợp không có thứ tự (có nghĩa là hai tập hợp là tương đương nếu chúng chứa các phần tử giống nhau). Các phần tử của tập hợp được lưu trữ không theo trình tự mà theo một số thuật toán cho phép bạn nhanh chóng xác định xem một phần tử có thuộc tập hợp hay không (không cần liệt kê tất cả các phần tử);
  • Các phần tử
  • set là duy nhất. Các yếu tố trùng lặp không được phép;
  • các tập hợp có thể thay đổi (ví dụ: bạn có thể thêm một phần tử vào một tập hợp), nhưng bản thân các phần tử bên trong tập hợp đó phải là bất biến (số, chuỗi, bộ dữ liệu). Bạn không thể tạo một danh sách hoặc một tập hợp khác thành phần tử của một tập hợp;

 

Tạo bộ
1 chiều

Chỉ cần liệt kê trong dấu ngoặc nhọn các phần tử trong tập hợp.

x = {"trường học", "giáo viên", "lớp học", học sinh
 

2 chiều 
Sử dụng chức năng tích hợp sẵn set(). x = đặt()    # bộ trống list_name = ["Andry", "Bob", "Caroline"] y = set(list_name)    # bạn có thể tạo nhiều                        # từ bất kỳ đối tượng có thể lặp lại nào z = set(["Andry", "Bob", "Caroline"])     # {'Bob', 'Caroline', 'Andry'} k = set(("Andry", "Bob", "Caroline"))     # {'Bob', 'Caroline', 'Andry'} s = "chuỗi s" m = (các) bộ    # {'i', 't', 'g', 'r', 'n', & #39;s', ' '} -                # Chú ý!                # thứ tự của các phần tử có thể là bất kỳ,               # phần tử không được lặp lại n = {42, 'foo', 3.14159, Không, (1, 2, 3)}    # phần tử trong                                                # có thể thuộc nhiều loại khác nhau  
Đặt đầu ra
Các phần tử của tập hợp được hiển thị theo thứ tự tùy ý, không nhất thiết phải theo thứ tự mà chúng được thêm vào. z = set(["Andry", "Bob", "Caroline"])  in(z)     # {'Bob', 'Caroline', 'Andry'} in(*z)    # Bob Andry Caroline

Các phương thức làm việc với tập hợp


Số phần tử trong tập hợp
Phương thức len() trả về số phần tử trong tập hợp. k = {42, 'foo', 3.14159, Không, (1, 2, 3)}  in(len(k))    #5

 

Xác định nếu một phần tử nằm trong một tập hợp (tư cách thành viên trong)
k = {42, 'foo', 3.14159, Không, (1, 2, 3)}  in(42 in k)    # Đúng in(2 in k)     # Sai
Mặc dù các phần tử chứa trong một tập hợp phải thuộc loại không thay đổi, nhưng bản thân các tập hợp đó có thể thay đổi được. 

 

Thêm phần tử vào bộ
x.add(<elem>)
vào tập hợp  x thêm <elem> phải là đối tượng bất biến duy nhất.

 

Xóa phần tử khỏi tập hợp
1) x.remove(<elem>)
<elem>  bị xóa khỏi bộ x. Python đưa ra một ngoại lệ (lỗi) nếu <elem> không có trong x.

2) x.discard(<elem>)
cùng một thao tác xóa nhưng trong trường hợp tập hợp thiếu phần tử thì không phát sinh ngoại lệ.

3) x.pop()
loại bỏ và trả về một phần tử ngẫu nhiên từ tập hợp. Nếu tập hợp ban đầu trống thì sẽ xảy ra ngoại lệ (lỗi).

4) x.clear()
xóa tất cả các phần tử khỏi tập hợp (xóa tập hợp).

Đặt sắp xếp?

Như chúng ta đã biết, thứ tự của các phần tử trong tập hợp không được tính đến. Vì vậy, nó có hợp lý khi nói về các bộ sắp xếp trong Python 3 không?! (Đó là lý do tại sao có một dấu chấm hỏi trong tiêu đề)

Để nhanh chóng tìm thấy một phần tử trong một tập hợp, bạn nên lưu trữ chúng trong bộ nhớ ở dạng có thứ tự.

Hãy xem xét một số ví dụ. Điều gì xảy ra với các phần tử thuộc các loại dữ liệu khác nhau trong cùng một tập hợp? Không nên sắp xếp các phần tử như vậy. Nếu chúng ta in các phần tử bằng lệnh print(), chúng sẽ được xuất ra như thế này:

a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'} print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} Trong trường hợp này, các giá trị chưa sắp xếp được hiển thị. Nếu bạn khởi chạy lại, thì thứ tự đầu ra có thể khác. Nhưng điều này chỉ xảy ra khi các phần tử thuộc các loại khác nhau được trộn lẫn.

Hãy thử hiển thị dữ liệu thuộc một loại (ví dụ: chỉ các số): a = {0, 1, 12, 3, 2} in(a) # {0, 1, 2, 3, 12} Tất cả các yếu tố được hiển thị theo thứ tự. Hãy thử chuyển đổi nó thành một danh sách: a = {0, 1, 12, 3, 2} b = danh sách (a) in(b) # [0, 1, 2, 3, 12] Tương tự, các phần tử được sắp xếp theo thứ tự tăng dần đã được ghi vào danh sách.

Hóa ra là các phần tử được lưu trữ trong bộ nhớ ở dạng có thứ tự nếu chúng cùng loại. Nhưng tốt hơn là đừng trông chờ vào điều đó, thuật toán Python có thể thay đổi.

Nếu bạn cần lấy một danh sách đã sắp xếp từ một tập hợp, tốt hơn là sử dụng sắp xếp (< code>sorted) để đảm bảo ). Các yếu tố sẽ được sắp xếp chính xác. Mã của bạn sẽ dễ hiểu đối với người khác.