Rate this post

Trong Python, set là một cấu trúc dữ liệu cơ bản mô phỏng khái niệm toán học về tập hợp. Được biểu diễn bởi một tập hợp các phần tử duy nhất và không theo thứ tự, set được sử dụng rộng rãi để thực hiện các hoạt động như kiểm tra sự tồn tại của phần tử, loại bỏ các phần tử trùng lặp từ một chuỗi hoặc danh sách, và thực hiện các phép toán toán học như giao, hợp, và hiệu của tập hợp. Khả năng tự động loại bỏ các phần tử trùng lặp khiến set trở thành một công cụ quý giá trong việc xử lý dữ liệu và giải quyết các vấn đề liên quan đến tập hợp một cách hiệu quả và trực quan. Sự linh hoạt và hiệu suất của set trong Python làm cho nó trở thành một phần không thể thiếu trong bộ công cụ của lập trình viên khi làm việc với dữ liệu phức tạp và cần được làm sạch hoặc tổ chức.

Ví dụ về Set

var = {"set1", "set2", "set3"}
type(var)
set
# chuyển từ list sang set
myset = set(["a", "b", "c"])
print(myset)

# thêm element vào set
myset.add("d")
print(myset)

Set Cố định

Các set 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 set cố định hoặc các set 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 một set có thể được sửa đổi bất kỳ lúc nào, nhưng các phần tử của set 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 tập hợp đóng băng.

# khai báo tập hợp {"a", "b","c"}
normal_set = set(["a", "b","c"])

print("tập hợp")
print(normal_set)

# tập hợp cố định
frozen_set = frozenset(["e", "f", "g"])

print("\n tập hợp frozenset")
print(frozen_set)

Cách hoạt động 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 list đượ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 triển khai:

Đặt với nhiều hoạt động trên một HashTable duy nhất:

Phương thức cho Sets

Thêm phần tử vào Python Sets

Việc chèn vào set được thực hiện thông qua hàm set.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ức là trung bình O(1). Tuy nhiên, trong trường hợp xấu nhất, nó có thể trở thành O(n).

#tạo tập hợp
people = {"people1", "people2", "people3"}

print("People:", end = " ")
print(people)

#thêm vào tập hợp
people.add("people4")

#duyệt từng phần tử sử dụng range
for i in range(1, 6):
	people.add(i)

print("\ntập hợp sau khi thêm element:", end = " ")
print(people)

Hợp trên Set Python

Hai set có thể được hợp nhất bằng hàm union() hoặc toán tử |. 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 set cần thực hiện phép hợp.

people = {"people1", "people2", "people3"}
vampires = {"vampires1", "vampires2"}
dracula = {"dracula1", "dracula2"}

# hợp sử dụng union()
population = people.union(vampires)

print("hợp tập hợp sử dụng union()")
print(population)


#hợp sử dụng toán tử Ư
population = people|dracula

print("\nhợp tập hợp sử dụng |")
print(population)

Giao trên Set

Điều này có thể được thực hiện thông qua toán tử Intersection () hoặc &. Các phần tử chung được chọn. Chúng tương tự như việc lặp lại các list 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 set cần thực hiện phép hợp.

#tạo 2 tập hợp
set1 = set()
set2 = set()

#sử dụng range 5
for i in range(5):
	set1.add(i)
#sử dụng range 3 đến 9
for i in range(3,9):
	set2.add(i)

# sử dụng toán tử giao
set3 = set1.intersection(set2)

print("giao tập hợp sử dụng intersection()")
print(set3)

#Giao tập hợp sử dụng &
set3 = set1 & set2

print("\niao tập hợp sử dụng '&'")
print(set3)

Tìm phần tử khác của các set trong Python

Để tìm sự khác biệt giữa các set. Tương tự như tìm sự khác biệt trong list liên kết. Điều này được thực hiện thông qua toán tử Difference() hoặc –. Độ phức tạp thời gian của việc tìm hiệu s1 – s2 là O(len(s1))

#tạo 2 tập hợp
set1 = set()
set2 = set()
#chạy range 5
for i in range(5):
	set1.add(i)
#chạy ranger 3 đến 9
for i in range(3,9):
	set2.add(i)

#sử dụng phương thức difference
set3 = set1.difference(set2)

print("phần tử khác sử dụng difference()")
print(set3)

#sử dụng toán tử -
set3 = set1 - set2

print("\nphần tử khác sử dụng '-'")
print(set3)

Xóa Set

Phương thức Set Clear() làm trống toàn bộ tập hợp.

#khai báo tập hợp
set1 = {1,2,3,4,5,6}

print("set ban đầu")
print(set1)

#phương thức xóa
set1.clear()

print("\ntập hợp sử dụng clear()")
print(set1)

Tuy nhiên, có hai vấn chính trong bộ Python:

Tập hợp không duy trì các phần tử theo bất kỳ thứ tự cụ thể nào.

Chỉ các phiên bản của các loại bất biến mới có thể được thêm vào set Python.

Toán Tử cho set

key in skiểm tra key trong tập hợp s
key not in skiểm tra key không nằm trong tập hợp s
s1 == s2s1 tương đương với s2
s1 != s2s1 không tương đương với s2
s1 <= s2s1 là tập con của s2
s1 < s2s1 là tập con nhỏ hơn của s2
s1 >= s2s1 là set lớn nhất của s2
s1 > s2s1 là set cha của s2
s1 | s2hợp của s1 và s2
s1 & s2giao của s1 và s2
s1 – s2set các phần tử trong s1 nhưng không phải s2
s1 ˆ s2set các phần tử thuộc chính xác một trong số s1 hoặc s2

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now