Comparison operators trong Python rất quan trọng trong Python's conditional statements ( if, else và elif ) và looping statements ( while và for loops ). Các comparison operators còn được gọi là relational operators . Một số toán tử nổi tiếng là "<" đại diện cho toán tử nhỏ hơn, và ">" đại diện cho toán tử lớn hơn.
Python sử dụng hai toán tử nữa, kết hợp với ký hiệu "=". Ký hiệu "<=" được sử dụng cho toán tử "nhỏ hơn hoặc bằng" và ký hiệu ">=" được sử dụng cho toán tử "lớn hơn hoặc bằng".
Python có hai toán tử so sánh nữa dưới dạng "==" và "!=". Chúng dành cho is equal to và is not equal to operators. Do đó, có sáu toán tử so sánh trong Python và chúng được liệt kê dưới đây trong bảng này:
< | Less than | a<b |
> | Greater than | a>b |
<= | Less than or equal to | a<=b |
>= | Greater than or equal to | a>=b |
== | Is equal to | a==b |
!= | Is not equal to | a!=b |
Các toán tử so sánh có bản chất nhị phân, yêu cầu hai toán hạng. Một biểu thức liên quan đến toán tử so sánh được gọi là biểu thức Boolean, và luôn trả về giá trị True hoặc False.
a=5 b=7 print (a>b) print (a<b)
Nó sẽ tạo ra output −
False True
Cả hai toán hạng có thể là Python literals , variables hoặc các biểu thức. Vì Python hỗ trợ phép toán số học hỗn hợp, bạn có thể có bất kỳ loại toán hạng nào.
Mã sau đây minh họa việc sử dụng comparison operators with integer numbers của Python −
print ("Both operands are integer") a=5 b=7 print ("a=",a, "b=",b, "a>b is", a>b) print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
Both operands are integer a= 5 b= 7 a>b is False a= 5 b= 7 a<b is True a= 5 b= 7 a==b is False a= 5 b= 7 a!=b is True
Trong ví dụ sau, một toán hạng kiểu nguyên và một toán hạng kiểu số thực được so sánh.
print ("comparison of int and float") a=10 b=10.0 print ("a=",a, "b=",b, "a>b is", a>b) print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
comparison of int and float a= 10 b= 10.0 a>b is False a= 10 b= 10.0 a<b is False a= 10 b= 10.0 a==b is True a= 10 b= 10.0 a!=b is False
Mặc dù đối tượng phức tạp là một số data type in Python , nhưng hành vi của nó khác với những đối tượng khác. Python không hỗ trợ các toán tử < và >, tuy nhiên nó hỗ trợ các toán tử so sánh bằng (==) và không bằng (!=).
print ("comparison of complex numbers") a=10+1j b=10.-1j print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
comparison of complex numbers a= (10+1j) b= (10-1j) a==b is False a= (10+1j) b= (10-1j) a!=b is True
Bạn gặp lỗi TypeError với các toán tử nhỏ hơn hoặc lớn hơn.
print ("comparison of complex numbers") a=10+1j b=10.-1j print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a>b is",a>b)
Nó sẽ tạo ra output −
comparison of complex numbers Traceback (most recent call last): File "C:\Users\mlath\examples\example.py", line 5, in <module> print ("a=",a, "b=",b,"a<b is",a<b) ^^^ TypeError: '<' not supported between instances of 'complex' and 'complex
Các đối tượng Boolean trong Python thực sự là các số nguyên: True là 1 và False là 0. Thực tế, Python coi bất kỳ số nào khác không là True. Trong Python, việc so sánh các đối tượng Boolean là khả thi. "False < True" là True!
print ("comparison of Booleans") a=True b=False print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a>b is",a>b) print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
comparison of Booleans a= True b= False a<b is False a= True b= False a>b is True a= True b= False a==b is False a= True b= False a!=b is True
Trong Python, chỉ có thể thực hiện so sánh giữa các đối tượng chuỗi tương tự. Một đối tượng chuỗi chỉ có thể so sánh với một chuỗi khác. Một list không thể được so sánh với một tuple , ngay cả khi cả hai đều có cùng mục.
print ("comparison of different sequence types") a=(1,2,3) b=[1,2,3] print ("a=",a, "b=",b,"a<b is",a<b)
Nó sẽ tạo ra output −
comparison of different sequence types Traceback (most recent call last): File "C:\Users\mlath\examples\example.py", line 5, in <module> print ("a=",a, "b=",b,"a<b is",a<b) ^^^ TypeError: '<' not supported between instances of 'tuple' and 'list'
Các đối tượng chuỗi (Sequence objects) được so sánh bằng cơ chế sắp xếp từ điển (lexicographical ordering). Việc so sánh bắt đầu từ phần tử tại chỉ số 0. Nếu chúng bằng nhau, việc so sánh sẽ chuyển sang chỉ số tiếp theo cho đến khi các phần tử tại một chỉ số nhất định không bằng nhau, hoặc một trong các chuỗi đã hết. Nếu một chuỗi là chuỗi con ban đầu của chuỗi kia, chuỗi ngắn hơn sẽ là chuỗi nhỏ hơn (thấp hơn).
Toán hạng nào lớn hơn phụ thuộc vào sự khác biệt về giá trị của các mục tại chỉ số mà chúng không bằng nhau. Ví dụ, 'BAT' > 'BAR' là đúng, vì T đứng sau R trong thứ tự Unicode.
Nếu tất cả các phần tử của hai chuỗi so sánh bằng nhau, thì các chuỗi được coi là bằng nhau.
print ("comparison of strings") a='BAT' b='BALL' print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a>b is",a>b) print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
comparison of strings a= BAT b= BALL a<b is False a= BAT b= BALL a>b is True a= BAT b= BALL a==b is False a= BAT b= BALL a!=b is True
Trong ví dụ sau, hai đối tượng tuple được so sánh −
print ("comparison of tuples") a=(1,2,4) b=(1,2,3) print ("a=",a, "b=",b,"a<b is",a<b) print ("a=",a, "b=",b,"a>b is",a>b) print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
a= (1, 2, 4) b= (1, 2, 3) a<b is False a= (1, 2, 4) b= (1, 2, 3) a>b is True a= (1, 2, 4) b= (1, 2, 3) a==b is False a= (1, 2, 4) b= (1, 2, 3) a!=b is True
Việc sử dụng các toán tử "<" và ">" cho từ điển trong Python là không được định nghĩa. Trong trường hợp này, lỗi TypeError: '<' không được hỗ trợ giữa các thể hiện của 'dict' và 'dict' sẽ được báo cáo.
So sánh sự bình đẳng kiểm tra xem độ dài của cả hai mục dict có giống nhau hay không. Độ dài của từ điển là số lượng cặp khóa-giá trị trong đó.
Python dictionaries được so sánh đơn giản dựa trên độ dài. Từ điển có ít phần tử hơn được coi là nhỏ hơn một từ điển có nhiều phần tử hơn.
print ("comparison of dictionary objects") a={1:1,2:2} b={2:2, 1:1, 3:3} print ("a=",a, "b=",b,"a==b is",a==b) print ("a=",a, "b=",b,"a!=b is",a!=b)
Nó sẽ tạo ra output −
comparison of dictionary objects a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a==b is False a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a!=b is True