Python 3

Các toán tử thường dùng trong Set

Đăng bởi - Ngày 15-04-2018

Trong phần trước ta đã học các khái niệm về set, thêm và xóa các phần tử trong set. Nếu bạn nào chưa nắm rõ về set thì có thể xem tại link bài viết này. Ok, bây giờ chúng ta sẽ nghiên cứu về các toán tử trong Set.

Toán tử trong Set

Set() trong Python được hỗ trợ một số toán tử giúp chúng ta có thể truy xuất dữ liệu một cách nhanh chóng. Các bạn cùng xem ví dụ sau:

>>> taphop = {2, 4, 5, 9, 12, 22, 25, 60, 89, 120, 199}
>>> 60 in taphop #1    
True                                                       
>>> 28 in taphop                                           
False                                                      
>>> new_set = {1, 3, 6, 9, 12, 13, 25, 26}       
>>> taphop.union(new_set) #2                 
{89, 1, 2, 3, 4, 5, 6, 199, 9, 12, 13, 22, 120, 25, 26, 60}
>>> taphop.intersection(new_set) #3
{9, 12, 25}                                                
>>> taphop.difference(new_set) #4
{2, 4, 5, 199, 22, 120, 89, 60}                            
>>> taphop.symmetric_difference(new_set) #5
{89, 1, 2, 3, 4, 5, 6, 199, 13, 22, 120, 26, 60}
  1. Để kiểm tra giá trị có trong set hay không bạn sử dụng in
  2. Phương thức union() trả về một set mới chứa tất cả các phần tử của hai set
  3. Phương thức intersection() trả về một set mới chỉ chứa những phần tử nào thuộc cả hai set
  4. Phương thức difference trả về một set mới chỉ chứa những phần tử có trong set taphop nhưng không có trong new_set
  5. Phương thức symmetric_difference trả về một set mới chứa tất cả những phần tử không chung giá trị ở cả hai set.

Cả ba phương thức trên đều là đối xứng (symmetric)

Ok, tới đây bạn cũng nắm được một phần về cách sử dụng các phương thức trên rồi. Nhưng nếu ta đảo ngược vị trí của new_set và taphop thì sẽ như thế nào?

>>> new_set.symmetric_difference(taphop)
{89, 1, 2, 3, 4, 5, 6, 199, 13, 22, 120, 26, 60}
>>> new_set.symmetric_difference(taphop) == taphop.symmetric_difference(new_set) #1
True
>>> new_set.union(taphop) == taphop.union(new_set) #2
True
>>> new_set.intersection(taphop) == taphop.intersection(new_set) #3
True
>>> new_set.difference(taphop) == taphop.difference(new_set) #4
False                                                                           
  1. symmetric_difference() đối xứng, vì vậy kết quả trả về True
  2. union() đối xứng
  3. intersection() đối xứng
  4. difference() thì không đối xứng. Bởi vì kết quả trả về chỉ chứa những kết quả trong new_set có mà taphop không có và ngược lại

Để giúp các bạn hiểu rõ hơn các toán tử trên, mình vẽ một sơ đồ như sau:

Sơ đồ Set

Python cũng cung cấp sẵn cho ta 2 method đặc biệt để kiểm tra xem tất cả phần tử của set này có thuộc phần tử của set kia hay không và ngược lại, bằng 2 method: issubset() và issuperset()

>>> a_set = {'a', 'b', 'c'}
>>> b_set = {'a', 'b', 'c', 'd'}
>>> a_set.issubset(b_set) #1
True
>>> b_set.issuperset(a_set) #2
True
>>> a_set.add('e') #3
>>> a_set.issubset(b_set)
False
>>> b_set.issuperset(a_set)
False
  1. a_set là con của b_set vì tất cả phần tử của a_set đều có trong b_set
  2. Ngược lại thì b_set là cha của a_set vì tất cả phần tử của a_set đều có trong b_set
  3. Nếu bạn thêm một phần tử mới vào a_set mà b_set không có, thì lúc này a_set không còn là con của b_set nữa và ngược lại

Các thẻ
Bài viết liên quan
2 nhận xét
  1. Trả lời

    Ruby

    16 Tháng 4, 2018

    Cảm ơn bài viết của bạn đã làm tôi hiểu hơn về set.

    • Trả lời

      Từ Anh Vũ

      16 Tháng 4, 2018

      Rất vui được giúp bạn, mong bạn sẽ theo dõi và trao đổi kinh nghiệm với tôi ở các bài tiếp theo.

Nhận xét mới

bắt buộc

yu.kusanagi
Từ Anh Vũ
Hồ Chí Minh, Việt Nam

Xin chào, tôi tên Từ Anh Vũ và là 1 free lancer developer và ngôn ngữ code yêu thích của tôi là Python và PHP. Công việc chủ yếu là viết các module cho magento, magento2, wordpress, django, flask và các framework khác
Nếu bạn muốn trao đổi với tôi hoặc muốn thuê tôi làm việc cho dự án của bạn, hãy liên hệ với tôi

ĐĂNG KÝ NHẬN BÀI MỚI

Tweets gần đây
Tác giả
Feeds
RSS / Atom
-->

Đăng ký nhận bài viết mới tại hocpython.com?

Hãy đăng ký nhận bài viết mới tại hocpython.com để:

  • Không bỏ lỡ các bài tutorials mới tại hocpython.com!
  • Cập nhật các công nghệ mới trong python!

Chỉ cần điền email và họ tên của bạn và nhấn Đăng ký nhận tin!