Hướng dẫn for if-else one line python - cho if-else một dòng python

Các điều kiện dòng đơn trong Python? Đây là khi nào và khi không sử dụng chúng.

Python không phải là ngôn ngữ lập trình nhanh nhất ngoài kia, nhưng cậu bé có thể đọc được và hiệu quả. Mọi người đều biết những câu lệnh có điều kiện là gì, nhưng bạn có biết bạn có thể viết các câu

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 trong một dòng mã Python không? Hóa ra bạn có thể, và bạn sẽ tìm hiểu tất cả về nó ngày hôm nay.

Sau khi đọc, bạn sẽ biết mọi thứ về Python nếu các câu lệnh khác trong một dòng. Bạn sẽ hiểu khi nào nên sử dụng chúng, và khi nào tốt nhất là tránh chúng và gắn bó với các tuyên bố có điều kiện thông thường.

Không cảm thấy muốn đọc? Thay vào đó xem video của tôi:

Bạn muốn được thuê làm nhà khoa học dữ liệu? Chạy một blog khoa học dữ liệu có thể giúp:

Có thể viết blog về khoa học dữ liệu thực sự giúp bạn được thuê làm nhà khoa học dữ liệu?

SPOILER ALERT - Vâng, viết blog về khoa học dữ liệu thực sự có thể khiến bạn được thuê trong ngành. Hãy nhận biết những sản phẩm bắt này trước khi bạn bắt đầu.

Hướng dẫn for if-else one line python - cho if-else một dòng python
Dario Radečić

Hướng dẫn for if-else one line python - cho if-else một dòng python


Có gì sai với câu lệnh nếu bình thường?

Hoàn toàn không có gì. Tách các câu lệnh có điều kiện thành nhiều dòng mã là một quy ước cho các lứa tuổi. Hầu hết các ngôn ngữ lập trình yêu cầu sử dụng dấu ngoặc xoăn và do đó các câu lệnh

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 không phải là một tùy chọn. Các ngôn ngữ khác chỉ cho phép viết các điều kiện đơn giản trong một dòng.

Và sau đó là Python. Trước khi đi sâu vào các câu lệnh khác trong một dòng, trước tiên chúng ta hãy tóm tắt ngắn về các điều kiện thông thường.

Ví dụ: bạn có thể kiểm tra xem một điều kiện có đúng với cú pháp sau không:

age = 16

if age < 18:
    print('Go home.')

Biến

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 nhỏ hơn 18 trong trường hợp này, do đó
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
9 được in vào bảng điều khiển. Bạn có thể thêm vào mọi thứ bằng cách thêm một điều kiện
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
0 được đánh giá nếu điều kiện đầu tiên là
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
1:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')

Lần này

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 lớn hơn 18, vì vậy
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
3 được in vào bảng điều khiển. Cuối cùng, bạn có thể thêm một hoặc nhiều điều kiện
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
4. Chúng được sử dụng để nắm bắt các trường hợp ở giữa. Ví dụ: bạn có thể in một cái gì đó hoàn toàn khác nếu
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 nằm trong khoảng từ 16 (bao gồm) và 18 (loại trừ):

age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')

Biến

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 là 17, có nghĩa là điều kiện trong
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
4 là
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
8, do đó
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
9 được in vào bảng điều khiển.

Những thứ khá cơ bản, vì vậy chúng tôi tự nhiên không muốn dành quá nhiều dòng mã để viết nó. Hóa ra, bạn có thể sử dụng toán tử ternary trong Python để đánh giá các điều kiện trong một dòng.ternary operator in Python to evaluate conditions in a single line.

Nhà điều hành ternary ở Python

Một toán tử ternary tồn tại trong một số ngôn ngữ lập trình và nó cho phép bạn rút ngắn một khối if-else đơn giản. Nó mất 3 toán hạng hoặc nhiều hơn:

  1. Giá trị nếu đúng - một giá trị được trả về nếu điều kiện đánh giá là
    age = 17
    
    if age < 16:
        print('Go home.')
    elif 16 <= age < 18:
        print('Not sure...')
    else:
        print('Welcome!')
    8.
    - A value that's returned if the condition evaluates to
    age = 17
    
    if age < 16:
        print('Go home.')
    elif 16 <= age < 18:
        print('Not sure...')
    else:
        print('Welcome!')
    8.
  2. Điều kiện - Một điều kiện Boolean phải được thỏa mãn để trả lại giá trị nếu đúng. - A boolean condition that has to be satisfied to return value if true.
  3. Giá trị nếu sai - một giá trị được trả về nếu điều kiện đánh giá là
    age = 17
    
    if age < 16:
        print('Go home.')
    elif 16 <= age < 18:
        print('Not sure...')
    else:
        print('Welcome!')
    1.
    - A value that's returned if the condition evaluates to
    age = 17
    
    if age < 16:
        print('Go home.')
    elif 16 <= age < 18:
        print('Not sure...')
    else:
        print('Welcome!')
    1.

Trong mã, nó sẽ trông như thế này:

a if condition else b

Bạn thậm chí có thể viết logic khác trong nhà điều hành ternary của Python. Trong trường hợp đó, cú pháp thay đổi một chút:

a if condition1 else b if condition2 else c

Tôi phải thừa nhận - nó có vẻ hơi trừu tượng khi được viết như thế này. Bạn sẽ thấy rất nhiều ví dụ thực tế bắt đầu từ phần tiếp theo.

Câu lệnh IF (không có câu lệnh khác)

Một câu lệnh

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 một dòng chỉ có nghĩa là bạn đang xóa dòng mới và thụt lề. Bạn vẫn đang viết cùng một mã, với sự thay đổi duy nhất là phải mất một dòng thay vì hai.

Lưu ý: Câu lệnh

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 một dòng chỉ có thể nếu có một dòng mã duy nhất theo điều kiện. Trong mọi trường hợp khác, hãy bọc mã sẽ được thực thi bên trong một hàm.: One-line
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 statement is only possible if there's a single line of code following the condition. In any other case, wrap the code that will be executed inside a function.

Đây là cách chuyển đổi câu lệnh

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 hai dòng của chúng tôi thành một điều kiện đơn dòng:

age = 17

if age < 18: print('Go home.')

Như trước đây,

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 ít hơn 18 nên
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
9 được in.

Điều gì sẽ xảy ra nếu bạn muốn in ba dòng thay vì một? Như đã nói trước đây, thực tiễn tốt nhất là bọc mã bên trong một hàm:

def print_stuff():
    print('Go home.')
    print('.......')
    print('Now!')
    
age = 17    
    
if age < 18: print_stuff()

Các tuyên bố

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 một dòng trong Python khá nhàm chán. Lợi ích tiết kiệm thời gian thực và không gian xảy ra khi bạn thêm điều kiện
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
0.

💡

Bạn sẽ được hưởng lợi nhiều nhất từ ​​các câu lệnh

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 một dòng nếu bạn thêm một hoặc nhiều điều kiện
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
0.

Tuyên bố IF-LINE IF-Else

Bây giờ chúng ta hoàn toàn có thể tận dụng sức mạnh của toán tử ternary của Python. Đoạn mã bên dưới lưu trữ

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
9 cho một biến mới
a if condition1 else b if condition2 else c
2 nếu
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 nhỏ hơn 18 hoặc
age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
3 nếu không:

age = 19

outcome = 'Go home.' if age < 18 else 'Welcome!'
print(outcome)

Như bạn đoán,

age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
3 được in vào bảng điều khiển vì
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 được đặt thành 19. Nếu bạn muốn in nhiều dòng hoặc xử lý logic phức tạp hơn, hãy bọc mọi thứ bạn muốn được thực hiện thành một hàm - như trước đây.

Bây giờ bạn có một bức tranh rõ ràng về cách toán tử Ternary hoạt động trên một câu lệnh IF-OLSE một dòng đơn giản. Chúng ta có thể thêm độ phức tạp bằng cách thêm nhiều điều kiện vào toán tử.

Tuyên bố IF-ELIF-OLSE một dòng

Luôn cẩn thận khi viết nhiều điều kiện trong một dòng mã. Logic vẫn sẽ hoạt động nếu dòng dài 500 ký tự, nhưng gần như không thể đọc và duy trì nó.

Bạn sẽ ổn với hai điều kiện trong một dòng, vì mã vẫn dễ đọc. Ví dụ sau đây in

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
9 nếu
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 dưới 16,
a if condition1 else b if condition2 else c
9 nếu
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 nằm trong khoảng 16 (bao gồm) và 18 (loại trừ) và
age = 17

if age < 18: print('Go home.')
1 nếu không:

age = 17

outcome = 'Go home.' if age < 16 else 'Not sure...' if 16 <= age < 18 else 'Welcome'
outcome

Bạn sẽ thấy

age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
9 được in vào bảng điều khiển, vì
age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
8 được đặt thành 17. Những gì trước đây chúng tôi đã đưa chúng tôi sáu dòng mã bây giờ chỉ mất một. Cải thiện gọn gàng, và mã vẫn dễ đọc và bảo trì.

Bạn có thể làm gì khác với các câu lệnh một dòng? Vâng, rất nhiều. Chúng tôi sẽ khám phá các điều kiện một dòng cho các hoạt động danh sách tiếp theo.

Ví dụ: Các điều kiện một dòng cho các hoạt động danh sách

Áp dụng một số logic vào danh sách liên quan đến việc áp dụng logic cho mọi mục danh sách và do đó lặp lại trên toàn bộ danh sách. Trước khi nghĩ về một ví dụ trong thế giới thực, hãy xem cách bạn có thể viết một câu lệnh có điều kiện cho mọi mục danh sách trong một dòng mã duy nhất.

Cách viết nếu và cho một dòng

Bạn sẽ cần thực hiện hai thay đổi cho toán tử ternary:

  • Bao quanh toàn bộ dòng mã với dấu ngoặc
    age = 17
    
    if age < 18: print('Go home.')
    4
  • Nối mã Lặp lại danh sách (
    age = 17
    
    if age < 18: print('Go home.')
    5) sau lần cuối cùng
    age = 17
    
    if age < 16:
        print('Go home.')
    elif 16 <= age < 18:
        print('Not sure...')
    else:
        print('Welcome!')
    0

Đây là cách cú pháp chung trông như thế nào:

[a if condition else b for element in array]

Nó không khó lắm, nhưng hãy lái xe về nhà với một ví dụ. Mã mã sau đây in

age = 17

if age < 18: print('Go home.')
7 nếu số lượng hiện tại của phạm vi lớn hơn 5 và
age = 17

if age < 18: print('Go home.')
8 nếu không. Các số nằm trong khoảng từ 1 đến 10 (bao gồm):

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
0Image 1 - Nếu và cho một dòng duy nhất trong Python (hình ảnh của tác giả)
Hướng dẫn for if-else one line python - cho if-else một dòng python
Image 1 - If and For in a single line in Python (image by author)

Bây giờ chúng ta hãy xem qua một ví dụ trong thế giới thực bổ sung.

Ví dụ: Học sinh có vượt qua kỳ thi không?

Để bắt đầu, chúng tôi sẽ khai báo một danh sách các sinh viên. Mỗi học sinh là một đối tượng từ điển Python với hai khóa: tên và điểm kiểm tra:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
1

Chúng tôi muốn in rằng học sinh đã vượt qua kỳ thi nếu điểm số từ 50 điểm trở lên. Nếu điểm số dưới 50 điểm, chúng tôi muốn in rằng học sinh đã thất bại trong kỳ thi.

Trong cú pháp Python truyền thống, chúng tôi sẽ lặp lại thủ công từng học sinh trong danh sách và kiểm tra xem điểm số lớn hơn 50:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
2Image 2 - Liệt kê lặp lại với cú pháp Python truyền thống (hình ảnh của tác giả)
Hướng dẫn for if-else one line python - cho if-else một dòng python
Image 2 - List iteration with traditional Python syntax (image by author)

Mã hoạt động, nhưng chúng tôi cần 5 dòng để kiểm tra đơn giản và lưu trữ kết quả. Bạn có thể sử dụng kiến ​​thức mới mua của mình để giảm lượng mã xuống một dòng:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
3Image 3 - Có điều kiện một dòng và một vòng với Python (hình ảnh của tác giả)
Hướng dẫn for if-else one line python - cho if-else một dòng python
Image 3 - One-line conditional and a loop with Python (image by author)

Kết quả là giống hệt nhau, nhưng chúng tôi có mã ngắn hơn và gọn gàng hơn nhiều. Nó chỉ nằm trên ranh giới không thể đọc được, thường là sự đánh đổi với các toán tử ternary và các vòng lặp một dòng. Bạn thường không thể có cả mã có thể đọc và các tập lệnh Python ngắn.

💡

Chỉ vì bạn có thể viết một điều kiện theo một dòng, điều đó không có nghĩa là bạn nên làm. Khả năng đọc là một ưu tiên.

Hãy xem trong trường hợp nào bạn tốt hơn với các câu

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6 truyền thống.

Cẩn thận với các điều kiện một dòng

Sự kết luận

Chỉ vì mã có ít không gian thẳng đứng không có nghĩa là nó dễ đọc hơn. Bây giờ bạn sẽ thấy ví dụ hoàn hảo của tuyên bố đó.

Đoạn trích dưới đây kiểm tra một điều kiện cho mọi cấp độ có thể (1-5) với điều kiện

age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
0 cuối cùng nắm bắt đầu vào không hợp lệ. Các điều kiện mất 12 dòng mã để viết, nhưng toàn bộ đoạn trích rất dễ đọc:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
4

Đúng như dự đoán, bạn sẽ thấy

def print_stuff():
    print('Go home.')
    print('.......')
    print('Now!')
    
age = 17    
    
if age < 18: print_stuff()
1 được in vào bảng điều khiển, nhưng đó không phải là điều chúng tôi quan tâm. Chúng tôi muốn dịch đoạn trích trên thành một câu lệnh if-else một dòng với toán tử ternary.

Nó có thể - nhưng kết quả cuối cùng là lộn xộn và không thể đọc được:

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
5

Đây là một ví dụ về một trường hợp cực đoan trong đó bạn có nhiều điều kiện bạn phải đánh giá. Tốt hơn là nên gắn bó với các tuyên bố truyền thống

age = 19

if age < 18:
    print('Go home.')
else:
    print('Welcome!')
6, mặc dù chúng có nhiều không gian thẳng đứng hơn.

Take Home Point: Một nhà điều hành ternary có nhiều hơn hai điều kiện chỉ là một cơn ác mộng để viết và gỡ lỗi.: A ternary operator with more than two conditions is just a nightmare to write and debug.

Sự kết luận

Chỉ vì mã có ít không gian thẳng đứng không có nghĩa là nó dễ đọc hơn. Bây giờ bạn sẽ thấy ví dụ hoàn hảo của tuyên bố đó.

Đoạn trích dưới đây kiểm tra một điều kiện cho mọi cấp độ có thể (1-5) với điều kiện

age = 17

if age < 16:
    print('Go home.')
elif 16 <= age < 18:
    print('Not sure...')
else:
    print('Welcome!')
0 cuối cùng nắm bắt đầu vào không hợp lệ. Các điều kiện mất 12 dòng mã để viết, nhưng toàn bộ đoạn trích rất dễ đọc:

Một cách thậm chí sạch hơn để viết các điều kiện dài là bằng cách sử dụng khớp mẫu cấu trúc - một tính năng mới được giới thiệu trong Python 3.10. Nó đưa tuyên bố

def print_stuff():
    print('Go home.')
    print('.......')
    print('Now!')
    
age = 17    
    
if age < 18: print_stuff()
4 yêu quý cho Python để có thêm khả năng đọc và tốc độ phát triển.

Các bạn nghĩ gì về các tuyên bố if-else một dòng trong Python? Bạn có sử dụng chúng thường xuyên hay bạn đã chuyển sang khớp mẫu cấu trúc? Hãy cho tôi biết trong phần bình luận dưới đây.

Giữ liên lạc

  • Hãy đăng ký để nhận thư mới từ tôi
  • Đăng ký trên YouTube
  • Kết nối trên LinkedIn

Danh sách đọc

  • Cách xuất và tải môi trường Anaconda cho các dự án khoa học dữ liệu
  • Cách cài đặt Apache Kafka bằng Docker - Cách dễ dàng
  • MacBook M1 so với M1 Pro cho Khoa học dữ liệu - Chip mới có tốt hơn không?

Chúng ta có thể viết nếu khác thành một dòng trong Python không?

Trả lời: Có, chúng tôi có thể sử dụng if-else trong một dòng.Trong Python, chúng ta có thể chuyển đổi if-else thành một câu lệnh có điều kiện.Yes, we can use if-else in one line. In Python, we can convert if-else into one conditional statement.

Chúng ta có thể viết nếu

Các ngôn ngữ lập trình khác như C ++ và Java có các toán tử ternary, rất hữu ích để đưa ra quyết định trong một dòng.Python không có toán tử ternary.Nhưng trong Python, chúng ta có thể sử dụng IF-Else trong một dòng và nó sẽ tạo ra hiệu ứng tương tự như toán tử ternary.

Làm thế nào để bạn viết một vòng lặp IF và cho một dòng trong một dòng?

Làm thế nào để viết một vòng lặp cho một dòng mã Python duy nhất ?..
Phương pháp 1: Nếu cơ thể vòng lặp bao gồm một câu lệnh, chỉ cần viết câu lệnh này vào cùng một dòng: Đối với I trong phạm vi (10): in (i).....
Phương pháp 2: Nếu mục đích của vòng lặp là tạo danh sách, hãy sử dụng danh sách hiểu thay vào đó: bình phương = [i ** 2 cho i trong phạm vi (10)] ..

Làm thế nào để bạn viết nếu điều kiện trong một dòng?

Nếu 1 == 1: In ('Hi') có thể được sử dụng như thế.Và '' 'nếu 1 == 1: in (' hi ')' '' sẽ không in gì! can be just used like that. And '''if 1==1: print('hi')''' will print nothing!