Chắc hẳn khi lập trình với Python, bạn đã từng nghe qua về toán tử membership. Đây là một công cụ mạnh mẽ giúp kiểm tra sự tồn tại của một phần tử trong một chuỗi dữ liệu. Tuy nhiên, toán tử membership thực chất hoạt động như thế nào, cú pháp ra sao và có những loại nào? Bài viết này sẽ giới thiệu sơ lược về toán tử membership trong Python.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Hiểu rõ khái niệm toán tử membership trong Python: Nắm vững định nghĩa và vai trò của toán tử này trong việc kiểm tra sự tồn tại của một phần tử trong một chuỗi.
- Phân biệt và sử dụng thành thạo 2 loại toán tử in và not in: Biết cách sử dụng in để kiểm tra sự tồn tại và not in để kiểm tra sự vắng mặt của một giá trị trong chuỗi.
- Áp dụng toán tử membership cho list, tuple, set và dictionary: Thực hành sử dụng toán tử in và not in với các kiểu dữ liệu phổ biến trong Python.
- Giải quyết các bài toán thực tế bằng toán tử membership: Nắm vững kiến thức để viết các đoạn code ngắn gọn và hiệu quả để kiểm tra điều kiện tồn tại.
- Có nền tảng vững chắc để học sâu hơn về Python: Hiểu rõ về toán tử membership sẽ giúp bạn dễ dàng tiếp cận các khái niệm phức tạp hơn trong lập trình Python.
Toán tử membership trong Python là gì?
Toán tử membership trong Python giúp xác định xem một phần tử có nằm trong một đối tượng kiểu container (chứa nhiều phần tử bên trong) hay không. Ví dụ, một danh sách (list), một tuple, hay một chuỗi (string) đều là những container.

2 Loại toán tử membership trong Python
Python có hai toán tử membership chính là in
và not in
. Cả 2 đều trả về giá trị kiểu Boolean. Kết quả của toán tử in
sẽ ngược lại với kết quả của toán tử not in
.
Toán tử in
Toán tử in
được dùng để kiểm tra xem:
- Một chuỗi con (substring) có nằm trong một chuỗi lớn hơn hay không.
- Một phần tử bất kỳ có nằm trong một list hoặc tuple hay không.
- Một danh sách con (sub-list) hoặc tuple con (sub-tuple) có nằm trong một danh sách hoặc tuple lớn hơn hay không.
Giả sử bạn có một danh sách các món ăn yêu thích, và bạn muốn kiểm tra xem một món ăn cụ thể có nằm trong danh sách đó hay không.
danh_sach_mon_an_yeu_thich = ["pho", "bun cha", "banh mi", "com tam"]
print ("pho" in danh_sach_mon_an_yeu_thich) # Kết quả: True
print ("pizza" in danh_sach_mon_an_yeu_thich) # Kết quả: False
Giải thích ví dụ:
danh_sach_mon_an_yeu_thich
: là một danh sách chứa các chuỗi, mỗi chuỗi là tên một món ăn."pho" in danh_sach_mon_an_yeu_thich
: Kiểm tra xem chuỗi"pho"
có nằm trong danh sáchdanh_sach_mon_an_yeu_thich
hay không. Vì"pho"
có trong danh sách, biểu thức này trả vềTrue
."pizza" in danh_sach_mon_an_yeu_thich
: Kiểm tra xem chuỗi"pizza"
có nằm trong danh sách hay không. Vì"pizza"
không có trong danh sách, biểu thức này trả vềFalse
.
Toán tử not in
Toán tử not in
được dùng để kiểm tra xem một giá trị có không xuất hiện trong một chuỗi, list, tuple hoặc các đối tượng tương tự hay không.
Để dễ hình dung, chúng ta hãy xem một ví dụ thực tế. Giả sử, bạn có một danh sách các loại trái cây:
danh_sach_trai_cay = ["xoai", "chuoi", "cam", "tao"]
# Kiểm tra xem "man" có KHÔNG nằm trong danh sách trái cây hay không
print("man", "not in", danh_sach_trai_cay, ":", "man" not in danh_sach_trai_cay)
# Kiểm tra xem "tao" có KHÔNG nằm trong danh sách trái cây hay không
print("tao", "not in", danh_sach_trai_cay, ":", "tao" not in danh_sach_trai_cay)
Khi chạy đoạn code trên, kết quả sẽ là:
man not in [‘xoai’, ‘chuoi’, ‘cam’, ‘tao’] : True
tao not in [‘xoai’, ‘chuoi’, ‘cam’, ‘tao’] : False
Giải thích kết quả:
"man" not in ['xoai', 'chuoi', 'cam', 'tao'] : True
: Kết quả làTrue
vì “man” (mận) không có trong danh sách trái cây."tao" not in ['xoai', 'chuoi', 'cam', 'tao'] : False
: Kết quả làFalse
vì “tao” (táo) có trong danh sách trái cây.
Toán tử membership với list and tuple
Bạn có thể sử dụng toán tử in
và not in
để kiểm tra xem một phần tử có tồn tại trong một list hoặc tuple hay không.
Ví dụ 1
ds_so = [10, 20, 30, 40]
a = 20
b = 10
c = a - b # c = 10
d = a / 2 # d = 10.0
print (a, "có trong", ds_so, ":", a in ds_so)
print (b, "không có trong", ds_so, ":", b not in ds_so)
print (c, "có trong", ds_so, ":", c in ds_so)
print (d, "không có trong", ds_so, ":", d not in ds_so)
Đoạn code trên sẽ tạo ra kết quả sau:
20 có trong [10, 20, 30, 40] : True
10 không có trong [10, 20, 30, 40] : False
10 có trong [10, 20, 30, 40] : True
10.0 không có trong [10, 20, 30, 40] : False
Điểm đáng chú ý:
- Trong trường hợp cuối cùng (
d not in ds_so
), mặc dùd
có giá trị là10.0
(một số thực),10.0
vẫn được so sánh với10
(một số nguyên) trong danh sách. - Python phân biệt giữa số nguyên (
int
) và số thực (float
). - Toán tử membership sẽ trả về
True
nếu một số được biểu diễn dưới các dạng khác như nhị phân, bát phân, hoặc thập lục phân vẫn nằm trong chuỗi.
Ví dụ:
>>> 0x14 in [10, 20, 30, 40] # 0x14 là biểu diễn thập lục phân của 20
True
Ví dụ 2
Tuy nhiên, nếu bạn cố gắng kiểm tra xem hai số liên tiếp có xuất hiện cùng nhau trong một list hoặc tuple hay không, toán tử in
sẽ trả về False
, trừ khi chính list/tuple đó chứa một tuple con gồm hai số đó theo đúng thứ tự.
var = (10, 20, 30, 40)
a = 10
b = 20
print ((a, b), "có trong", var, ":", (a, b) in var)
var = ((10, 20), 30, 40)
a = 10
b = 20
print ((a, b), "có trong", var, ":", (a, b) in var)
Kết quả:
(10, 20) có trong (10, 20, 30, 40) : False
(10, 20) có trong ((10, 20), 30, 40) : True
Giải thích ví dụ:
- Trong trường hợp đầu tiên,
(a, b)
là một tuple chứa hai giá trị10
và20
. Toán tửin
kiểm tra xem tuple(10, 20)
có phải là một phần tử của tuplevar
hay không. Vìvar
chỉ chứa các số riêng lẻ (10
,20
,30
,40
), không chứa tuple(10, 20)
, kết quả làFalse
. - Trong trường hợp thứ hai,
var
chứa một tuple con là(10, 20)
. Do đó, khi kiểm tra(a, b) in var
, kết quả làTrue
vì(10, 20)
thực sự là một phần tử củavar
.
Toán tử membership với set
Các toán tử membership trong Python không chỉ hoạt động tốt với kiểu dữ liệu list và tuple, mà còn rất hiệu quả khi sử dụng với kiểu dữ liệu set.
Để kiểm tra một phần tử có tồn tại trong một set hay không, ta có thể sử dụng toán tử in
. Dưới đây là một ví dụ cụ thể:
# Khởi tạo một set các số nguyên
tap_hop_so = {10, 20, 30, 40}
# Kiểm tra xem số 20 có nằm trong tập hợp hay không
a = 10
b = 20
print(b, "có trong", tap_hop_so, ":", b in tap_hop_so)
# Ví dụ với set chứa tuple
tap_hop_tuple = {(10, 20), 30, 40}
a = 10
b = 20
print((a, b), "có trong", tap_hop_tuple, ":", (a, b) in tap_hop_tuple)
Đoạn code trên sẽ cho ra kết quả sau:
20 có trong {40, 10, 20, 30} : True
(10, 20) có trong {40, 30, (10, 20)} : True
Toán tử membership với dictionary
Trong Python, toán tử in
cũng như not in
có thể được sử dụng với đối tượng dictionary (từ điển). Tuy nhiên, Python chỉ kiểm tra xem một giá trị có tồn tại trong tập hợp các key của dictionary hay không, chứ không kiểm tra các value.
Để dễ hình dung hơn, bạn xem qua ví dụ sau đây:
thong_tin_sinh_vien = {
"ma_so": "SV001",
"ten": "Nguyễn Văn A",
"tuoi": 20,
"khoa": "Công nghệ thông tin"
}
ma_so_can_kiem_tra = "ma_so"
ten_can_kiem_tra = "Nguyễn Văn A"
print(ma_so_can_kiem_tra, "in", thong_tin_sinh_vien, ":", ma_so_can_kiem_tra in thong_tin_sinh_vien)
print(ten_can_kiem_tra, "in", thong_tin_sinh_vien, ":", ten_can_kiem_tra in thong_tin_sinh_vien)
Đoạn code trên sẽ cho ra kết quả:
ma_so in {‘ma_so’: ‘SV001’, ‘ten’: ‘Nguyễn Văn A’, ‘tuoi’: 20, ‘khoa’: ‘Công nghệ thông tin’} : True
Nguyễn Văn A in {‘ma_so’: ‘SV001’, ‘ten’: ‘Nguyễn Văn A’, ‘tuoi’: 20, ‘khoa’: ‘Công nghệ thông tin’} : False
Giải thích code:
Dictionary thong_tin_sinh_vien
: Lưu trữ thông tin của một sinh viên, với các key như"ma_so"
,"ten"
,"tuoi"
,"khoa"
và các value tương ứng.- Ở dòng
print
đầu tiên: Chương trình kiểm tra xem chuỗi"ma_so"
có phải là một key trong dictionarythong_tin_sinh_vien
hay không. Vì"ma_so"
là một key hợp lệ, kết quả trả về làTrue
. - Ở dòng
print
thứ hai: Chương trình kiểm tra xem chuỗi"Nguyễn Văn A"
có phải là một key trongthong_tin_sinh_vien
hay không. Mặc dù"Nguyễn Văn A"
là một value trong dictionary (giá trị tương ứng với key"ten"
),"Nguyễn Văn A"
không phải là một key. Do đó, kết quả trả về làFalse
.
Lời kết
Vậy là chúng ta vừa cùng nhau khám phá chi tiết về toán tử membership trong Python. Hy vọng qua bài viết này, bạn đã hiểu rõ hơn về toán tử in
và not in
, cũng như cách ứng dụng chúng với các kiểu dữ liệu khác nhau như list, tuple, set và dictionary. Mong rằng những kiến thức này sẽ giúp bạn viết code Python hiệu quả và dễ dàng hơn.
Mọi người cũng đọc