Python 3

Giới thiệu về Set

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

Giới thiệu về set

Set là 1 tập hợp các thứ tự của các giá trị duy nhất. Một set có thể chứa các giá trị của bất kỳ loại dữ liệu không thay đổi.

Nếu bạn có 2 set bạn có thể làm các phép toán như phép hợp 2 set lại, giao của 2 set, hiệu của 2 set

Cách tạo 1 set

>>> taphop = {1} #1
>>> taphop
{1}
>>> type(taphop) #2
<class 'set'>
>>> taphop = {1, 2} #3
>>> taphop
{1, 2}

  1. Để khởi tạo set, bạn cần đặt giá trị trong cặp dấu ngoặc nhọn {}.
  2. Set được thực thi như một class
  3. Để tạo một set có nhiều giá trị, bạn chỉ cần thêm giá trị tiếp theo với dấu phẩy

Nếu bạn có 1 list bạn có thể convert list sang set

>>> taphop_list = [1, "b", "hocpython", True, False]
>>> taphop_set = set(taphop_list) #1
>>> taphop_set #2
{'b', 1, 'hocpython', False} 
>>> taphop_list #3
[1, 'b', 'hocpython', True, False]
  1. Để tạo set từ list, bạn sử dụng set()function (Thật sự thì set là không phải là 1 function, nó là một class. Chúng ta sẽ tìm hiểu sau, còn bây giờ để đơn giản, bạn cứ hiểu đây set() như là một function và trả về một set)
  2. Set có thể chứa bất kỳ loại giá trị nào, nhưng như đã nói: set không thể sắp xếp thứ tự các phần tử, nó không thể nhớ được thứ tự ban đầu các phần tử của list dùng để tạo ra nó. Nếu bạn thêm 1 phần tử mới vào set này, nó sẽ không nhớ được thứ tự bạn đã thêm vào ở đâu.
  3. Bạn có thể thấy thứ tự các phần tử ở taphop_list không thay đổi thứ tự nhưng taphop_set thì thay đổi

Nếu bạn cần khởi tạo một set rỗng, bạn có thể khởi tạo như sau:

>>> taphop_set = set() #1
>>> taphop_set #2
set()
>>> type(taphop_set) #3
<class 'set'>
>>> len(taphop_set) #4
0
>>> taphop = {} #5
>>> type(taphop)
<class 'dict'>
  1. Để tạo một set rỗng, bạn dùng set() không có tham số truyền vào
  2. Nếu bạn print set rỗng ra, bạn sẽ thấy một điều lạ là nó không hiện {} mà là set(). Bởi vì nếu print kết quả là {} thì đó là dictionary rỗng chứ không phải là set rỗng.
  3. Để chắc chắn là set ta dùng type() để xem thử taphop_set là gì
  4. taphop_set không có phần tử nào
  5. Nếu bạn khai báo với {} thì đây là dictionary chứ không phải set

Thêm phần tử mới vào Set

Ta có hai cách để thêm phần tử mới vào set đó là dùng add() và update()

>>> taphop = {1, 2}
>>> taphop.add(4) #1
>>> taphop
{1, 2, 4}
>>> len(taphop) #2
3
>>> taphop.add(1) #3
>>> taphop
{1, 2, 4}
>>> len(taphop) #4
3
  1. Phương thức add() chỉ có một tham số, tham số này có thể là bất kỳ loại dữ liệu nào. Sau đó thêm giá trị từ tham số này vào set
  2. Số phần tử của taphop đã thay đổi thành 3
  3. Các phần tử trong set không thể trùng nhau. Nếu bạn thêm một phần tử đã có trong set thì nó sẽ không làm gì cả và cũng không thông báo lỗi
  4. Số phần tử trong tập hợp vẫn là 3
>>> taphop = {1, 2, 3}
>>> taphop
{1, 2, 3}
>>> taphop.update({2, 4, 6}) #1
>>> taphop #2
{1, 2, 3, 4, 6}
>>> taphop.update({3, 6, 9}, {1, 2, 3, 5, 8, 13}) #3
>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 13}
>>> taphop.update([10, 20, 30]) #4
>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 20, 30}
  1. update() nhận vào một phần tử set và thêm tất cả những phần tử từ set này vào set gốc. Nó tương đương với bạn dùng add() cho từng phần tử trong set mới
  2. Những giá trị nào có rồi sẽ không được thêm vào
  3. Bạn có thể dùng update() với nhiều tham số cùng một lúc. update() sẽ lấy phần tử từ những tham số này và thêm vào set gốc. (Những phần tử nào trùng lặp sẽ bị bỏ qua)
  4. update() có thể lấy đối tượng từ một số kiểu dữ liệu, bao gồm cả list. Khi tham số là list, update() sẽ thêm tất cả phần tử của list vào set

Xóa phần tử từ set

Để xóa một phần tử ra khỏi set, ta có ba cách: discard(), remove(), pop()

>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 20, 30}
>>> taphop.discard(10) #1
>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 13, 20, 30}
>>> taphop.discard(10) #2
>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 13, 20, 30}
>>> taphop.remove(13) #3
>>> taphop
{1, 2, 3, 4, 5, 6, 8, 9, 20, 30}
>>> taphop.remove(13) #4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 13
>>> taphop.pop() #5
1
>>> taphop.pop()
2
>>> taphop.pop()
3
>>> taphop.clear() #6
>>> taphop
set()
>>> taphop.pop() #7
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'
  1. discard() nhận một tham số vào và xóa giá trị đó khỏi set
  2. Nếu bạn dùng discard() với giá trị không có trong set, nó sẽ không hiển thị bất kỳ lỗi nào.
  3. remove() nhận một tham số vào và xóa giá trị đó khỏi set
  4. Đây là sự khác nhau giữa discard() và remove(): Nếu giá trị này không tồn tại trong set, thì remove() sẽ xuất 1 lỗi exception KeyError
  5. Cũng như list, bạn có thể dùng pop() để xóa bỏ phần tử từ set. pop() sẽ xóa 1 phần tử từ set và trả về giá trị vừa xóa. Tuy nhiên, vì set không có thứ tự nên không có giá trị cuối trong set, nên không thể điều khiển được giá trị nào được xóa.
  6. clear() sẽ xóa toàn bộ giá trị trong set, và sẽ trở thành set rỗng. clear() sẽ thực hiện như taphop = set(), tạo 1 set rỗng và ghi đè toàn bộ giá trị trước đó của taphop.
  7. Nếu gọi pop() cho một set rỗng sẽ thì pop() sẽ gọi một lỗi exception KeyErrorKeyError.

Bài kế tiếp chúng ta sẽ học về các toán tử trong set

Các thẻ
Bài viết liên quan
Giới thiệu về Tuple

Ngày 16 Tháng 4, 2018

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

Ngày 15 Tháng 4, 2018

Giới thiệu về list

Ngày 09 Tháng 4, 2018

2 nhận xét
  1. Trả lời

    Hihi Haha

    15 Tháng 4, 2018

    hihihi hahaha mở hàng website

    đố biết là ai?? hehehe

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!