Làm thế nào để bạn so sánh nhiều hơn một biến trong python?

hoặc đi qua các toán hạng của nó từ trái sang phải và trả về giá trị của toán hạng đầu tiên có "giá trị thực" là True. Nếu không ai trong số chúng có giá trị thật là Giá trị thật của True, nó trả về giá trị của toán hạng cuối cùng

Nếu tất cả các toán hạng là Đúng hoặc Sai hoặc các biểu thức phân giải thành Đúng hoặc Sai, nó sẽ hoạt động như bạn mong đợi

Nhưng nếu toán hạng là các đối tượng khác [trong ví dụ là int], thì Python sẽ tuân theo các quy tắc

  • Giá trị thực của Sai, 0, bất kỳ vùng chứa trống nào hoặc bất kỳ biểu thức nào đánh giá một trong các đối tượng đó là Sai
  • Giá trị thật của mọi thứ khác là True
x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true

[và hoạt động theo cách tương tự. nó trả về giá trị của đối tượng đầu tiên có giá trị thật là Sai; . ]

Bạn đang đề cập đến điều này [từ trên]?

x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true

Hãy nhớ rằng Python in, trong trường hợp hoặc, giá trị đầu tiên [đối tượng] có giá trị boolean [“true”] là True và giá trị thứ hai nếu cả hai đều có giá trị boolean là Sai. Trong trường hợp này, [] là giá trị thứ hai [đối tượng]. [Và, tương tự như vậy, và trả về đối tượng Sai đầu tiên hoặc đối tượng True thứ hai. ]

Vấn đề là, không giống như các toán tử so sánh khác, trả về True hoặc False hoặc tăng TypeError nếu các giá trị không thể so sánh được và và hoặc trả về giá trị của một trong các toán hạng của chúng. Nếu các toán hạng đó là các biểu thức boolean trả về Đúng hoặc Sai, thì hành vi đó là những gì bạn mong đợi; . e. , một trong các đối tượng] đã trả về

Để kiểm tra xem một trong nhiều biến có phải là một trong nhiều giá trị hay không, hãy sử dụng khả năng hiểu danh sách và hàm

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True

Kiểm tra nhiều biến đối với một giá trị duy nhất và ngược lại

Trong Python, nếu bạn muốn xem một biến có phải là một trong nhiều giá trị có thể hay không, bạn có thể sử dụng toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
5 như thế này

>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False

Python có cú pháp ngắn gọn hơn sử dụng toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3 và nhiều giá trị được đóng gói trong một bộ

>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False

Toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3 kiểm tra theo nghĩa đen nếu giá trị trong
>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
8 nằm trong bộ dữ liệu ở phía bên phải của toán tử
>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3. Mã này dễ đọc hơn và trong hầu hết các trường hợp, khả năng đọc mã quan trọng hơn hiệu suất. Nhưng việc sử dụng
>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3 thực hiện nhanh hơn một chút so với chuỗi toán tử
>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
5. Chúng ta có thể sử dụng các mô-đun
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
2 tích hợp sẵn của Python để xem mất bao nhiêu giây để chạy mã này mười triệu lần

x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true
4

Nếu bạn gặp trường hợp ngược lại và bạn có nhiều biến cần kiểm tra dựa trên một giá trị, bạn có thể đổi chỗ bên trái và bên phải của toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3. Vì vậy, thay vì sử dụng các toán tử
>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
5 như thế này

x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true
7

bạn có thể viết mã bằng toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3 như thế này

x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true
9

Kiểm tra nhiều biến đối với nhiều giá trị

Nếu bạn có nhiều biến và bạn muốn xem liệu có bất kỳ biến nào trong số này khớp với một trong số các giá trị hay không, bạn có thể sử dụng tính năng hiểu danh sách và hàm

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4 tích hợp. Hãy dành một chút thời gian để tìm hiểu về hai khái niệm này trước

Hàm

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4 lấy một danh sách hoặc bộ [hoặc bất kỳ giá trị có thể lặp lại nào khác] và trả về
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8 nếu bất kỳ giá trị nào trong danh sách đó là
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8. Nếu danh sách chỉ có giá trị
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
0 hoặc trống, nó sẽ trả về
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
0

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
6

Ngoài ra còn có một hàm

>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
2 tích hợp trả về
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8 nếu danh sách chỉ chứa các giá trị
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8 hoặc là một danh sách trống. Mặt khác,
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
2 trả về
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
0

Khả năng hiểu danh sách là một cú pháp Python ngắn để tạo các giá trị danh sách dựa trên một danh sách hoặc bộ dữ liệu khác [hoặc bất kỳ giá trị có thể lặp lại nào khác]

Thông thường, bạn sẽ sử dụng vòng lặp

>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
7 để tạo danh sách mới dựa trên giá trị của danh sách khác. Ví dụ: tôi đang tạo một danh sách có tên là
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8 chứa các số nguyên trong danh sách
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
9, nhưng nhân với
x = 1 or 2

y = 0 or []

z = 3 > 2 or 5 < 10
print[x]
print[y]
print[z]

# Output
1      # first True
[]     # last value, as both have a truth value of False
True   # Expression evaluates to true
40

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
6

Một cách ngắn gọn hơn để viết mã này bằng Python là hiểu danh sách. Lưu ý những điểm tương đồng giữa cách hiểu danh sách một dòng và mã vòng lặp

>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
7 nhiều dòng

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
8

Để kiểm tra xem có bất kỳ một trong nhiều biến có chứa bất kỳ một trong nhiều giá trị hay không, chúng ta có thể sử dụng khả năng hiểu danh sách và toán tử

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
3 để tạo danh sách các giá trị Boolean
>>> spam = 42
>>> if spam == 3.1415 or spam == 'hello' or spam == 42 or spam == False:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
8 và
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
0. Danh sách Booleans được tạo bởi khả năng hiểu danh sách dựa trên việc giá trị của biến có nằm trong bộ giá trị hay không

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
0

Chúng ta có thể chuyển danh sách Booleans này tới hàm

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4 và xác định xem có bất kỳ biến nào khớp với bất kỳ giá trị nào không

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
1

Đặt nhiều mã này vào một dòng sẽ kéo dài giới hạn về khả năng đọc mã, nhưng nó ngắn gọn hơn là không sử dụng khả năng hiểu danh sách và

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4. Không có chúng, bạn sẽ phải sử dụng các vòng lặp
>>> spam = 42
>>> if spam in [3.1415, 'hello', 42, False]:
..   print["spam is either 3.1415, 'hello', 42, or False"]
...
spam is either 3.1415, 'hello', 42, or False
7 lồng nhau và rất nhiều dòng mã không nhất thiết phải nhiều hơn

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
2

Đó là rất nhiều mã để thực hiện một nhiệm vụ đơn giản. Cách hiểu danh sách và cách tiếp cận

>>> a, b, c = 1, 42, 3
>>> any[[x in [100, 3.1415, 'Hello', 42, 'cheese'] for x in [a, b, c]]]
True
4 ngắn gọn và dễ đọc hơn

Cái gì được sử dụng để so sánh hai hoặc nhiều giá trị trong Python?

Phương thức Python set[] và == toán tử để so sánh hai danh sách .

Bạn có thể sử dụng += với nhiều biến không?

Có, toán tử += cho phép thêm nhiều hơn chỉ một giá trị tại một thời điểm . Mọi thứ ở phía bên tay phải của += sẽ được đánh giá và sau đó nó sẽ được thêm vào biến sau đó được cập nhật thành giá trị mới đó.

Làm cách nào để kiểm tra nhiều biến cho bằng nhau đối với một giá trị?

Nếu bạn gặp trường hợp ngược lại và bạn có nhiều biến cần kiểm tra dựa trên một giá trị, bạn có thể hoán đổi bên trái và bên phải của toán tử in. So instead of using or operators like this: >>> a, b, c = 3.1415, 'hello', 42 >>> if a == 'hello' or b == 'hello' or c == 'hello': ...

Bạn có thể xác định nhiều biến cùng một lúc trong Python không?

Python gán giá trị từ phải sang trái. Khi gán nhiều biến trong một dòng, các tên biến khác nhau được cung cấp ở bên trái của toán tử gán được phân tách bằng dấu phẩy . Điều tương tự cũng xảy ra với các giá trị tương ứng của chúng ngoại trừ chúng phải ở bên phải của toán tử gán.

Chủ Đề