Ở bài này ta sẽ tìm hiểu về Sets trong python. Sets được sử dụng để lưu trữ nhiều mục trong một biến duy nhất.
Sets
- Set là một trong 4 kiểu dữ liệu có sẵn trong Python dùng để lưu trữ các bộ sưu tập dữ liệu, 3 kiểu còn lại là List , Tuple và Dictionary, tất cả đều có cách sử dụng khác nhau.
- Set là một bộ sưu tập không có thứ tự , không thể thay đổi và không được lập chỉ mục.
- Set được viết bằng dấu ngoặc nhọn.
thisset = {"apple", "banana", "cherry"} print(thisset)
Không có thứ tự:
- Không có thứ tự có nghĩa là các mục trong một set không có thứ tự xác định.
- Các mục đã đặt có thể xuất hiện theo thứ tự khác nhau mỗi khi bạn sử dụng chúng và không thể tham chiếu theo chỉ mục hoặc khóa.
Không thể thay đổi:
- Các mục trong set không thể thay đổi, nghĩa là chúng ta không thể thay đổi các mục sau khi set đã được tạo.
Không được lặp phần tử:
- Set không thể có hai phần tử có cùng giá trị.
thisset = {"apple", "banana", "cherry", "apple"} print(thisset) >>> {'banana', 'cherry', 'apple'}
Lưu ý: Các giá trị True và 1 được coi là cùng một giá trị trong các set và được coi là trùng lặp
Độ dài của một set
Để xác định một bộ có bao nhiêu mục, hãy sử dụng hàm len().
thisset = {"apple", "banana", "cherry"} print(len(thisset)) >>>3
Kiểu dữ liệu phần tử trong Set
Các phần tử có thể thuộc bất kỳ loại dữ liệu nào:
set1 = {"apple", "banana", "cherry"} set2 = {1, 5, 7, 9, 3} set3 = {True, False, False}
Một Set có thể chứa các loại dữ liệu khác nhau:
set1 = {"abc", 34, True, 40, "male"}
Kiểu dữ liệu của Set
Từ quan điểm của Python, các tập hợp được định nghĩa là các đối tượng có kiểu dữ liệu ‘set’:
<class 'set'>
Khởi tạo Set
Cũng có thể sử dụng hàm tạo set() để tạo một Set.
thisset = set(("apple", "banana", "cherry")) # note the double round-brackets print(thisset)
Truy xuất dữ liệu trong Set
Bạn không thể truy cập các mục trong một tập hợp bằng cách tham khảo chỉ mục hoặc khóa.
Tuy nhiên, bạn có thể lặp qua các mục đã đặt bằng cách sử dụng vòng lặp for hoặc hỏi xem liệu một giá trị đã chỉ định có xuất hiện trong một tập hợp hay không bằng cách sử dụng từ khóa in.
Ví Dụ:
thisset = {"apple", "banana", "cherry"} for x in thisset: print(x) >>> apple cherry banana
Ví Dụ:
thisset = {"apple", "banana", "cherry"} print("banana" in thisset) >>>True
Thay đổi phần tử trong Set
Thêm phần tử
- Để thêm một mục vào một Set, hãy sử dụng phương thức add().
thisset = {"apple", "banana", "cherry"} thisset.add("orange") print(thisset) >>>{'cherry', 'banana', 'apple', 'orange'}
- Để thêm các mục từ Set khác vào Set hiện tại, hãy sử dụng phương thức update().
thisset = {"apple", "banana", "cherry"} tropical = {"pineapple", "mango", "papaya"} thisset.update(tropical) print(thisset) >>> {'apple', 'mango', 'cherry', 'pineapple', 'banana', 'papaya'}
Xoá phần tử
- Để xóa một mục trong một Set, hãy sử dụng phương thức remove(), hoặc discard().
thisset = {"apple", "banana", "cherry"} thisset.remove("banana") print(thisset) >>> {'cherry', 'apple'}
Lưu ý: Nếu mục cần xóa không tồn tại remove() sẽ báo lỗi.
thisset = {"apple", "banana", "cherry"} thisset.discard("banana") print(thisset)
Lưu ý: Nếu mục cần xóa không tồn tại, discard()sẽ KHÔNG phát sinh lỗi.
- Phương thức clear() thức làm trống Set
thisset = {"apple", "banana", "cherry"} thisset.clear() print(thisset) >>> set()
Nối các Set với nhau
Nối hai Set
Có một số cách để nối hai hoặc nhiều Set trong Python.
Bạn có thể sử dụng phương thức union() trả về một Set mới chứa tất cả các mục từ cả hai Set hoặc phương thức update() chèn tất cả các mục từ Set này sang Set khác:
set1 = {"a", "b" , "c"} set2 = {1, 2, 3} set3 = set1.union(set2) print(set3)
hoặc
set1 = {"a", "b" , "c"} set2 = {1, 2, 3} set1.update(set2) print(set1)
Lưu ý: Cả hai union() và update() sẽ loại trừ mọi mục trùng lặp.
Một số cách gộp đặc biệt khác
- Gộp chỉ giữ lại các giá trị trùng lặp: Phương thức intersection_update()sẽ chỉ giữ lại các mục có trong cả hai Set.
x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} x.intersection_update(y) print(x) >>> {'apple'}
- Gộp giữ lại những bản ghi không trùng lặp: Phương thức symmetric_difference_update() sẽ chỉ giữ lại các phần tử KHÔNG có trong cả hai Set.
x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} x.symmetric_difference_update(y) print(x) >>> {'google', 'banana', 'microsoft', 'cherry'}
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: