Python - Comparison Operators

Python Comparison Operators

Comparison operators trong Python rất quan trọng trong Python's conditional statements ( if, else elif ) và looping statements ( while 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".

Different Comparison Operators in Python

Python có hai toán tử so sánh nữa dưới dạng "==" và "!=". Chúng dành cho is equal to 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.

Example

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.

Example

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

Comparison of Float Number

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.

Example

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

Comparison of Complex umbers

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 (!=).

Example

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.

Example

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

Comparison of Booleans

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!

Example

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

Comparison of Sequence Types

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.

Example

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.

Example

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 −

Example

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

Comparison of Dictionary Objects

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.

Example

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