Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Sets: Hướng Dẫn Chi Tiết

Thường, làm việc dữ liệu, bạn muốn lưu danh sách dữ liệu không chứa giá trị trùng lặp, và giá trị không thể thay đổi. Ví dụ, tạo danh sách ID mua hàng tạp hóa, muốn mỗi ID duy nhất, không ai thay đổi giá trị danh sách.

Đó là lúc đối tượng set Python xuất hiện. Set là tập hợp không thứ tự các mục chỉ chứa giá trị duy nhất.

Hướng dẫn thảo luận, tham khảo ví dụ, cơ bản Python set, và cách thực hiện thao tác phổ biến như thêm/xóa giá trị set.

Python Sets

Cấu trúc dữ liệu set tích hợp Python tương tự ý tưởng set toán học.

Python set chứa không hoặc nhiều phần tử, không thứ tự xác định mỗi phần tử set. Mọi phần tử lưu trong set duy nhất, không trùng lặp, và mỗi giá trị riêng lẻ set không thể thay đổi.

Mặc dù giá trị riêng lẻ set không thay đổi, set bản thân có thể. Nghĩa là thêm/xóa mục set.

Cấu trúc set hữu ích vì đi kèm phép toán học làm việc dữ liệu lưu set.

Tạo Python Set

Python, set định nghĩa danh sách mục (hoặc "phần tử") tách dấu phẩy. Danh sách đặt trong ngoặc nhọn ({}).

Python set lưu bất kỳ số mục, mỗi mục set dùng kiểu dữ liệu khác nhau. Set lưu integer hoặc string, hoặc string, float, tuple. Tuy nhiên, set không lưu kiểu dữ liệu可变 (mutable), như set khác, dictionary, list.

Giả sử tạo set lưu danh sách bài tập về nhà học sinh nộp lớp Tiếng Anh. Tạo set bằng mã:

assignments = {"Worksheet #4", "Worksheet #5", "Worksheet #7", "End of Topic Review #2"}
print(assignments)

Mã trả về:

{'Worksheet #5', 'Worksheet #4', 'Worksheet #7', 'End of Topic Review #2'}

Mã định nghĩa set assignments bốn giá trị. Sau, in nội dung set assignment bảng điều khiển. Bạn thấy giá trị trả về thứ tự ngẫu nhiên vì set không lưu mục thứ tự cụ thể.

Thay Đổi Set

Khi tạo set, không thay đổi giá trị mục set. Tuy nhiên, thêm/xóa mục set.

Thêm Mục Vào Set

Thêm phần tử Python set, dùng add(). Giả sử học sinh nộp Worksheet #8 cập nhật set theo dõi bài nộp. Làm bằng mã:

assignments = {"Worksheet #4", "Worksheet #5", "Worksheet #7", "End of Topic Review #2"}
assignments.add("Worksheet #8")
print(assignments)

Mã trả về:

{'Worksheet #8', 'Worksheet #4', 'Worksheet #5', 'End of Topic Review #2', 'Worksheet #7'}

Như thấy, Worksheet #8 thêm set.

Thêm vào, muốn thêm nhiều mục set, dùng update(). update() nhận danh sách mục thêm set tham số, thêm mục set.

Giả sử học sinh nộp cả worksheet #8 và #9. Thay đổi set phản ánh bài nộp mới:

assignments = {"Worksheet #4", "Worksheet #5", "Worksheet #7", "End of Topic Review #2"}
assignments.update(["Worksheet #8", "Worksheet #9"])
print(assignments)

Mã trả về:

{'Worksheet #9', 'End of Topic Review #2', 'Worksheet #8', 'Worksheet #7', 'Worksheet #4', 'Worksheet #5'}

Giờ set chứa hai giá trị mới: Worksheet #8 và Worksheet #9.

Xóa Phần Tử Set

Xóa phần tử set, dùng discard() hoặc remove().

discard() xóa mục set trả về nothing nếu mục không tồn tại set. remove() thử xóa mục set, nếu không tồn tại, raise error.

Giả sử xóa Worksheet #9 bản ghi bài tập vì học sinh làm lại. Làm bằng mã:

assignments = {'Worksheet #9', 'End of Topic Review #2', 'Worksheet #8', 'Worksheet #7', 'Worksheet #4', 'Worksheet #5'}
assignments.discard("Worksheet #9")
print(assignments)

Mã trả về:

{'End of Topic Review #2', 'Worksheet #5', 'Worksheet #4', 'Worksheet #8', 'Worksheet #7'}

Bạn thấy giá trị Worksheet #9 xóa set. Hoàn thành dùng discard().

Xóa Toàn Bộ Set (Clear)

Xóa toàn bộ set, dùng clear(). Giả sử xóa bản ghi bài tập vì cuối năm không cần lưu. Làm bằng mã:

assignments = {'Worksheet #9', 'End of Topic Review #2', 'Worksheet #8', 'Worksheet #7', 'Worksheet #4', 'Worksheet #5'}
assignments.clear()
print(assignments)

Mã trả về: {}. Phản ánh set rỗng.

Trả Về Độ Dài Set

Tìm số mục lưu set, dùng len().

Giả sử tìm bao nhiêu bài tập học sinh nộp. Làm bằng mã:

assignments = {'Worksheet #9', 'End of Topic Review #2', 'Worksheet #8', 'Worksheet #7', 'Worksheet #4', 'Worksheet #5'}
print(len(assignments))

Mã trả về: 6. Mã khai báo set assignments. Sau, dùng len() tìm số mục lưu assignments set.

Phép Toán Set Python

Ưu điểm dùng set lưu dữ liệu: set hỗ trợ phép toán học set. Đi qua ba phép toán chính.

Các phép toán set không thay đổi nội dung set. Thay vào đó, tính toán set hiện có.

Hợp Set (Union)

union() tạo set tất cả phần tử hai set.

Giả sử hai danh sách bài tập học sinh muốn gộp. Một chứa bài tập về nhà, kia chứa bài luận. Gộp bằng mã:

assignments = {"Worksheet #4", "Worksheet #5", "Worksheet #7"}
essays = {"Essay #1", "Essay #2"}
homework = assignments.union(essays)
print(homework)

Mã trả về:

{'Worksheet #7', 'Essay #2', 'Worksheet #4', 'Essay #1', 'Worksheet #5'}

Mã dùng union() gộp hai set. Gán giá trị set mới gộp biến homework. Sau, in giá trị homework.

Thay vào đó, dùng mã:

assignments = {"Worksheet #4", "Worksheet #5", "Worksheet #7"}
essays = {"Essay #1", "Essay #2"}
print(assignments | essays)

Toán tử "|" thực hiện union set. Mã trả set gộp:

{'Essay #2', 'Worksheet #4', 'Worksheet #5', 'Essay #1', 'Worksheet #7'}

Giao Set (Intersection)

intersection() tạo danh sách phần tử chung hai set.

Giả sử danh sách bài luận nộp, và danh sách bài luận phát hành. Muốn biết bài luận chưa nộp, thực hiện intersection.

Mã dùng:

essays_handed_in = {"Essay #1", "Essay #2"}
essays_issued = {"Essay #1", "Essay #2", "Essay #3"}
due = essays_handed_in.intersection(essays_issued)
print(due)

Mã trả về:

{'Essay #1', 'Essay #2'}

Ví dụ dùng intersection() tìm tất cả phần tử tồn tại cả essays_handed_in và essays_issued. Gán kết quả intersection biến due, in bảng điều khiển.

Thêm vào, dùng & thực hiện intersection set. Muốn intersection hai set trước, dùng mã:

essays_handed_in = {"Essay #1", "Essay #2"}
essays_issued = {"Essay #1", "Essay #2", "Essay #3"}
print(essays_handed_in & essays_issued)

Mã trả về:

{'Essay #1', 'Essay #2'}

Hiệu Set (Difference)

difference() tìm phần tử có set này không có set kia.

Giả sử tạo danh sách bài luận nộp chưa chấm. Làm bằng mã:

essays_handed_in = {"Essay #1", "Essay #2"}
essays_graded = {"Essay #1"}
final = essays_handed_in.difference(essays_graded)
print(final)

Mã trả về:

{"Essay #2"}

Mã dùng difference() tìm hiệu essays_handed_in và essays_graded. Thay vào đó, dùng -:

essays_handed_in = {"Essay #1", "Essay #2"}
essays_graded = {"Essay #1"}
print(essays_handed_in - essays_graded)

Mã trả về:

{"Essay #2"}

Kết quả giống hệt. Thay vì difference() set method, dùng - operator, kiểm tra hiệu hai set.

Kết Luận

Cấu trúc dữ liệu set Python lưu tập hợp không thứ tự các mục.

Mỗi mục set phải duy nhất, không trùng lặp, nội dung set không thay đổi sau thêm.

Hướng dẫn thảo luận, tham khảo ví dụ, cơ bản Python set và phép toán chính set.

Chúng ta chỉ nguồng mặt nước set – còn nhiều khám phá – nhưng bao quát kỹ năng chính làm việc set hiệu quả. Bây giờ bạn sẵn sàng dùng Python set() như pro!


Python dùng môi trường phát triển chuyên nghiệp toàn cầu từ phân tích dữ liệu đến phát triển web. Tải ứng dụng Career Karma miễn phí hôm nay tìm hiểu con đường nghề Python programming.