Viết code gọn gàng trên 1 dòng với For-IF trong Python


Trong Python, khi sử dụng vòng lặp For và câu điều kiện If, bạn có thể gộp chúng trên duy nhất 1 dòng như sau.

Mệnh đề điều kiện IF

VD 1: Gom if lên 1 dòng

# Multi rows
if True:
    print('Yes')

# One row
if True: print('Yes')

# Or 
True and print('Yes')

VD 2: Gom if else lên 1 dòng

# Multi rows
if True:
    print('Yes')
else:
    print('No')

# One row
print('Yes') if True else print('No')

Vòng lặp For

# Multi rows
for i in range(5):
    print('i=%d' % i)

# One row
for i in range(5): print('i=%d' % i)

Kết hợp giữa for và IF

VD 1: Kết hợp giữa forif lên 1 dòng

# Multi rows
fruits = ['apple', 'banana', 'orange']

for fruit in fruits:
    if fruit == 'apple':
        print('I eat it in the morning')

# One row
[print('I eat it in the morning') for fruit in fruits if fruit == 'apple']

VD 2: Gọi 1 function với for, if

def calculate(a, b):
    print(a + b)


# Multi rows
for i in [1, 2]:
    if i == 2:
        calculate(1, 1)

# One row
any(calculate(1, 1) for i in [1, 2] if i == 2)
# Or
(calculate(1, 1) for i in [1, 2] if i == 2)

VD 3: Gọi function với for, if else

def calculate(a, b):
    print(a + b)


for i in [1, 2, 3]:
    if i == 2:
        calculate(1, 1)
    else:
        calculate(1, 2)

any(calculate(1, 1) if i == 2 else calculate(1, 2) for i in [1, 2, 3])

VD 4: Gọi nhiều lần function với for, if

def calculate(a, b):
    print(a + b)


# Multi rows
for i in [1, 2, 3]:
    if i == 2:
        calculate(1, 1)
        calculate(1, 2)

# One row
any(calculate(1, 1) or calculate(1, 2) for i in [1, 2, 3] if i == 2)

Việc gom từ nhiều dòng code thành 1 dòng code giúp chúng ta giảm thiểu số lines of code của chương trình Python, giúp chương trình gọn gàng hơn. Tuy nhiên các bạn nên cân nhắc vì có thể người đọc code sẽ khó hiểu do cách viết code khá khác với cách viết code thông thường.

 

 

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web