Rate this post

Set 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.

Các bài viết liên quan:

Set đượ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 set, trái ngược với list, 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 set 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 set 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 list.

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)

Cố định Set Python

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