Tìm hiểu kiểu dữ liệu Set trong Python

Kiểu dữ liệu Set được khai báo bởi dấu ngoặc nhọn { }. Thoạt nhìn các bạn hay lầm tưởng với kiểu dữ liệu dictionary, tuy nhiên kiểu dữ liệu Set không
seopro

Set được sử dụng để lưu trữ các phần tử không trùng lặp và không có thứ tự. Khả năng này của Set mang lại nhiều lợi ích trong việc xử lý và quản lý dữ liệu. Vậy cụ thể Set trong Python là gì và cách thức hoạt động như thế nào? Cùng ptdulieu tìm hiểu dưới đây.

Table of Contents

Tìm hiểu kiểu dữ liệu Set trong Python

Một Set thường bao gồm các đặc điểm sau đây: 

  • Set là một container trong python. 
  • Mỗi giá trị của Set trong python chỉ xuất hiện tối đa 1 lần.
  • Các phần tử của Set không có vị trí nhất định và có thể thay đổi được.
  •  Các phép toán thường được sử dụng trong Set là: phép hợp (union), phép giao (intersection), phép hiệu (difference)… 

Các phần tử trong Set phải là các dữ liệu không thể thay đổi như một số (int), một chuỗi (string), hoặc một Tuple.

Tạo set trong Python

Tạo một set trong Python có nghĩa là bạn xác định và khởi tạo một tập hợp các phần tử duy nhất. Quá trình này bao gồm việc chỉ định các phần tử sẽ là một phần của set, đồng thời đảm bảo rằng mỗi phần tử là duy nhất trong set đó. 

Có hai cách chính để tạo một set trong Python: sử dụng dấu ngoặc nhọn {} hoặc hàm set().

Ví dụ: dấu ngoặc nhọn {}

string_set1 = {'Banana', 'Mango', 'Lemon'}
print(string_set1)

mixed_set1 = {2, 'xyz', 3.14, (2+3j), True}
print(mixed_set1)

layered_set1 = {1, 2, 3, ('a', 'b', 'c')}
print(layered_set1)

#kết quả:
{'Mango', 'Banana', 'Lemon'}
{True, 2, 3.14, (2+3j), 'xyz'}
{1, 2, 3, ('a', 'b', 'c')}

Ví dụ: hàm set()

string_set2 = set(('Banana', 'Mango', 'Lemon'))
print(string_set2)

mixed_set2 = set([2, 'xyz', 3.14, (2+3j), True])
print(mixed_set2)

layered_set2 = set([1, 2, 3, ('a', 'b', 'c')])
print(layered_set2)

#kết quả:
{'Mango', 'Banana', 'Lemon'}
{True, 2, 3.14, (2+3j), 'xyz'}
{1, 2, 3, ('a', 'b', 'c')}

Thêm phần tử mới trong set

Để thêm một phần tử vào set trong Python, bạn có thể sử dụng hàm add(). Hàm add() hữu ích khi bạn muốn bổ sung các phần tử mới vào một set đã có. Nếu phần tử đã có trong set, set sẽ không thay đổi. Ví dụ:

Ví dụ: hàm add()

#ví dụ 1
# Thêm một phần tử vào Set trong python sử dụng hàm add()
set_Fruits = {"Banana","Mango","Apple","Lemon","Orange"}
set_Fruits.add("Cherry")
print(set_Fruits)

#kết quả: {'Mango', 'Apple', 'Cherry', 'Orange', 'Banana', 'Lemon'}

#ví dụ 2
my_set = {1, 2, 3, 3}  # Khởi tạo một set, lưu ý: set chỉ chứa phần tử độc nhất.
# Thêm phần tử 4 vào set.
my_set.add(4)
print(my_set)

#kết quả: {1, 2, 3, 4}

#ví dụ 3
#Sử dụng vòng lặp for hoặc từ khóa in 
my_set1 = {'roses are red'}
my_set1.add('violet and blue')
for x in my_set1:
    print(x)

#kết quả:
violet and blue
roses are red

Thêm nhiều phần tử mới trong set

Sử dụng hàm update() để thêm nhiều phần tử (item) vào Set.

Ví dụ: hàm update()

# Thêm nhiều phần tử vào Set trong python sử dụng hàm update()
set_Fruits = {"Banana","Mango","Apple","Lemon","Orange"}
set_Fruits.update(["Lychee","Starfruit","Grape"])
print(set_Fruits)

#kết quả: {'Mango', 'Apple', 'Grape', 'Lychee', 'Orange', 'Banana', 'Starfruit', 'Lemon'}

#ví dụ 2
#Sử dụng vòng lặp for hoặc từ khóa in 
my_set1 = {'roses are red'}
my_set1.update(['violet and blue', 'so are you'])
for x in my_set1:
    print(x)

#kết quả: 
violet and blue
so are you
roses are red   

Xóa phần tử khỏi set

Bạn có thể xóa một phần tử khỏi set bằng cách sử dụng hàm remove() và discard().

Cách làm này có ích khi bạn muốn loại bỏ các phần tử cụ thể khỏi set. Tuy nhiên, cần lưu ý, nếu phần tử không có trong set, remove() sẽ gây ra lỗi KeyError.

Ngoài ra hàm pop() là hàm xóa phần tử cuối cùng của Set. Lưu ý : Bởi vì kiểu dữ liệu Set không có thứ tự, không có chỉ mục index do đó chúng ta không xác định được chính xác phần tử cuối cùng. Chúng ta chỉ có thể xóa bất kỳ một phần tử cuối cùng của Set. 

Trong khi hàm clear() dùng để xóa tất cả các phần tử trong Set.

Ví dụ:

my_set1 = {'red', 'blue', 'green'}
my_set1.remove('red')
print(my_set1)

#kết quả: {'green', 'blue'}

#không có phần tử gây ra lỗi KeyError 
my_set1 = {'red', 'blue', 'green'}
my_set1.remove('white')
print(my_set1)

#kết quả:---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[19], line 2
      1 my_set1 = {'red', 'blue', 'green'}
----> 2 my_set1.remove('white')
      3 print(my_set1)

KeyError: 'white'

my_set1 = {'red', 'blue', 'green'}
my_set1.discard('blue')
print(my_set1)

#kết quả: {'green', 'red'}

# Xóa tất cả các phần tử của Set trong python sử dụng hàm clear()
my_set1 = {'red', 'blue', 'green'}
my_set1.clear()
print(my_set1)

#kết quả: set()

#ví dụ khác
my_set1 = {'roses are red'}
my_set1.add('violet and blue')
my_set1.update(['Banana', 'Mango', 'Apple'])
my_set1.clear()
print(my_set1)

#kết quả: set()


# Xóa phần tử cuối cùng trong Set sử dụng hàm pop()
set_Fruits = {"Banana","Mango","Apple","Lemon","Orange"}
set_Fruits.pop()
print(set_Fruits)

#kết quả: {'Apple', 'Orange', 'Banana', 'Lemon'}

Truy cập tới các phần tử của Set

Bởi vì kiểu dữ liệu Set không có chỉ mục và không có thứ tự, do đó chúng ta không thể truy cập tới các phần tử (item) bằng chỉ mục index được. Tuy nhiên bạn có thể sử dụng vòng lặp for hoặc từ khóa in để truy cập tới các phần tử của Set.

# Truy cập tới các phần tử của Set trong python sử dụng vòng lặp for:
set_Fruits = {"Banana","Mango","Apple","Lemon","Orange"}
for x in set_Fruits:
    if x=="Banana":
        print(x)

#kết quả: Banana

# Truy cập tới các phần tử của Set trong python sử dụng từ khóa in :
set_Fruits = {"Banana","Mango","Apple","Lemon","Orange"}
a = "Banana" in set_Fruits
if a==True:
     print("Banana co trong set_Fruits")     
else:
     print("Banana khong co trong set_Fruits")

#kết quả: Banana co trong set_Fruits

Phần tử trùng lặp trong set

Set trong Python là các tập hợp không có thứ tự của các phần tử duy nhất. Điều này có nghĩa là nếu bạn cố gắng tạo một set với các phần tử trùng lặp, các phần tử trùng lặp đó sẽ tự động bị loại bỏ. Ví dụ:

#Phần tử trùng lặp trong set
my_set = {1, 2, 2, 3, 3, 4, 5, 5}
print(my_set)

#kết quả: {1, 2, 3, 4, 5}

Kiểm tra phần tử trong set

Set cung cấp một cách hiệu quả để kiểm tra xem một phần tử có tồn tại trong set hay không. Bạn có thể sử dụng toán tử in để thực hiện việc kiểm tra này. Toán tử in trả về True nếu phần tử có trong set và False nếu không có. Ví dụ:

my_set = {1, 2, 3, 4} #khởi tạo set
if 2 in my_set:
   print("Số 2 có trong set")
else:
   print("Số 2 không có trong set")
   
#kết quả: Số 2 có trong set

Các phép toán trên set

Set trong Python hỗ trợ nhiều phép toán khác nhau, giúp thao tác và so sánh các Set. Các phép toán này bao gồm hợp, giao, hiệu, hiệu đối xứng và kiểm tra tập con. Set đặc biệt hữu ích khi bạn cần làm việc với các tập hợp chứa các phần tử duy nhất và thực hiện các phép toán dựa trên lý thuyết tập hợp.

Ví dụ Union

Hợp (Union): Kết hợp các phần tử từ cả hai Set bằng cách sử dụng hàm union() hoặc toán tử |.

#hàm union()
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1.union(color2)
print(color)

#kết quả: {'green', 'blue', 'violet', 'pink', 'black', 'white', 'red'}

#toán tử |
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1 | color2
print(color)

#kết quả: {'green', 'blue', 'violet', 'pink', 'black', 'white', 'red'}

Ví dụ Intersection

Giao (Intersection): Lấy các phần tử chung giữa hai Set bằng hàm intersection() hoặc toán tử &.

#hàm intersection()
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1.intersection(color2)
print(color)

#kết quả:{'red'}

#toán tử &
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1 & (color2)
print(color)

#kết quả:{'red'}

Ví dụ Difference

Hiệu (Difference): Lấy các phần tử có trong Set này nhưng không có trong Set kia bằng hàm difference() hoặc toán tử -.

#hàm difference()
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1.difference(color2)
print(color)

#kết quả:{'green', 'white', 'blue'}

#toán tử -
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1 - color2
print(color)

#kết quả:{'green', 'white', 'blue'}

Ví dụ symmectric_difference

Hiệu đối xứng (Symmetric Difference): Lấy các phần tử có trong một trong hai Set nhưng không có trong cả hai Set, sử dụng phương thức symmetric_difference() hoặc toán tử ^.

#hàm symmectric_difference()
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1.symmetric_difference(color2)
print(color)

#kết quả:{'green', 'blue', 'pink', 'black', 'white', 'violet'}

#toán tử ^
color1 = {'red', 'blue', 'green', 'white'}
color2 = {'red', 'black', 'pink', 'violet'}
color = color1 ^ color2
print(color)

#kết quả:{'green', 'blue', 'pink', 'black', 'white', 'violet'}

Bài viết trên về kiểu dữ liệu Set trong Python, từ khái niệm cơ bản, cách tạo, thêm, xóa, kiểm tra phần tử, đến các phép toán và Set Comprehensions nâng cao. Hy vọng rằng những kiến thức này sẽ giúp bạn hiểu rõ hơn về Set và ứng dụng chúng một cách hiệu quả trong các dự án lập trình của mình.

Đăng nhận xét