Hướng dẫn how to reduce multiple if/else in python - cách giảm nhiều if/else trong python

Tôi khuyên bạn nên tạo một chức năng mô phỏng trường hợp chuyển đổi

def switch[argument]:
    switcher = {
        0: cv2.cvtColor[barc0Img, cv2.COLOR_BGR2HSV],
        1: cv2.cvtColor[barc1Img, cv2.COLOR_BGR2HSV],
        2: cv2.cvtColor[barc2Img, cv2.COLOR_BGR2HSV],
        3: cv2.cvtColor[barc3Img, cv2.COLOR_BGR2HSV],
        4: cv2.cvtColor[barc4Img, cv2.COLOR_BGR2HSV],
        5: cv2.cvtColor[barc5Img, cv2.COLOR_BGR2HSV],
        6: cv2.cvtColor[barc6Img, cv2.COLOR_BGR2HSV],
        7: cv2.cvtColor[barc7Img, cv2.COLOR_BGR2HSV],
        8: cv2.cvtColor[barc8Img, cv2.COLOR_BGR2HSV],
    }
    return switcher.get[argument, "nothing"]

amountLst = []
argument = yourArgument  # 0,1,2,3,....
hsv = switch[argument]
lower_bound = np.array[[0, 80, 80]]
upper_bound = np.array[[20, 255, 255]]
mask = cv2.inRange[hsv, lower_bound, upper_bound]
amountLst.append[mask]

Câu lệnh IF là phương thức logic chính trong Python và chúng ta có thể tìm thấy chúng ở khắp mọi nơi trong mã Python. Là người mới bắt đầu, bạn thường viết các dòng mã dài để kiểm tra xem có gì đúng không và sau đó thực hiện một cái gì đó dựa trên kết quả của điều kiện.

Bài viết này sẽ cho bạn thấy ba cách khác nhau mà bạn có thể viết nhiều câu lệnh Pythonic, ngắn và ngắn gọn hơn và ngắn gọn nếu không có dòng mã dài.

Bạn sẽ học cách hưởng lợi từ các loại dữ liệu Boolean để viết mã ngắn gọn hơn và tạo các câu lệnh chuyển đổi hiệu quả cho các lựa chọn khác nhau.

Là một nhà khoa học dữ liệu không gian địa lý, các ví dụ tôi cung cấp ở đây có tất cả các hương vị địa lý, như thường lệ. Đi nào.

  1. Sử dụng các câu lệnh IF/ELSE trong một dòng.
  2. Sử dụng các chức năng bảng cho nhiều câu lệnh IF/ELIF.
  3. Tận dụng các giá trị Boolean.

1. Sử dụng các câu lệnh IF/ELSE trong một dòng

Nó rất phổ biến để xem các câu lệnh/khác trong mã Python được viết như thế này:

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

Output 
S
E

Trong ví dụ trên, mã chỉ định vĩ độ [bắc-nam] và kinh độ [Đông-Tây] tùy thuộc vào độ tọa độ.

Điều này là tốt nhưng không cần thiết. Để đơn giản hóa mã và giảm số lượng dòng trong các câu lệnh có điều kiện, bạn có thể sử dụng một câu lệnh IF có điều kiện.

Hãy xem xét mã ngắn gọn sau đây thực hiện giống nhau với một dòng cho mỗi câu lệnh IF/ELSE có điều kiện.

print["N" if lat < 0 else "S"]
print["E" if long < 0 else "W"]
Output 
S
E

Nó có thể giảm câu lệnh thành một dòng mã vì nó sử dụng câu lệnh IF IF có điều kiện. & NBSP;

Ở đây, cú pháp:

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

3

Vì vậy, ở đây, chúng tôi nhận được

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

4 nếu
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

5 nhỏ hơn
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

6 độ và
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

7 khác.

Có một cách thậm chí còn đẹp hơn để rút ngắn mã bằng cách sử dụng loại dữ liệu Boolean tích hợp của Python, mà tôi sẽ hiển thị cho bạn bên dưới. & NBSP;

Nhưng trước tiên, hãy để Lừa xem một ví dụ với nhiều câu lệnh IF/ELIF.

Thêm từ Abdishakur Hassanthe 7 Các loại bản đồ chủ đề tốt nhất cho dữ liệu không gian địa lýThe 7 Best Thematic Map Types for Geospatial Data

2. Sử dụng các chức năng của bảng cho nhiều câu lệnh IF/ELIF

Vì Python không có câu lệnh chuyển đổi, bạn thường viết một mã như sau để chọn giữa các lựa chọn khác nhau [và nhiều] nếu/Elif.

Phần đầu tiên của mã tạo ra bốn chức năng đơn giản in chức năng. Đoạn trích này cũng đặt biến GDF biến thành chuỗi trống và N thành ba.

def plot_choropleth[gdf]:
    print["Plotting Choropleth"]

def plot_heatmap[gdf]:
    print["Plotting Heatmap"]

def plot_animation[gdf]:
    print["Plotting Animation"]

def plot_bubblemap[gdf]:
    print["Plotting Bubblemap"]

gdf = ""
n = 3

Tiếp theo, hãy để mô phỏng lựa chọn giữa các lựa chọn khác nhau này bằng cách sử dụng câu lệnh IF/ELIF.

if n == 1:
    plot_choropleth[gdf]
elif n == 2:
    plot_heatmap[gdf]
elif n == 3:
    plot_animation[gdf]
elif n == 4:
    plot_bubblemap[gdf]
Output
​​​​​​​Plotting Animation

Trong ví dụ này, chúng tôi có ____18, và do đó chúng tôi gọi chức năng

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

9 và in ra hình ảnh âm mưu.

Mã như thế là dài dòng. Mặc dù nó sẽ hoạt động, nhưng nó không gọn gàng. Trong Python, chúng tôi nói rằng mọi thứ là một đối tượng, bao gồm các chức năng. Do đó, chúng ta có thể đặt các chức năng trong một danh sách giống như bất kỳ đối tượng nào khác và truy cập chúng bằng chỉ mục.

func_list = [plot_choropleth, plot_heatmap, plot_animation, plot_bubblemap][n-1]

Ở đây chúng tôi đặt các chức năng vào một danh sách bằng cách chọn chỉ mục của biến N. Lưu ý rằng chúng tôi trừ một vì Python sử dụng chỉ mục dựa trên không. Bây giờ chúng tôi gọi

Output 
S
E
0 trên
Output 
S
E
1 để mô phỏng các câu lệnh chuyển đổi mà không có câu lệnh IF/ELIF rõ ràng và dòng mã dài.

Trong ví dụ tiếp theo, tôi sẽ chỉ cho bạn một cách ngắn gọn hơn để viết câu lệnh IF/ELSE bằng cách sử dụng kiểu dữ liệu Boolean tích hợp Python.

Hướng dẫn Python: Điều kiện và Booleans - nếu, khác và Elif tuyên bố

Thêm các mẹo chuyên gia về việc làm sạch Code5 của bạn để viết thêm mã Pythonic5 Ways to Write More Pythonic Code

3. Tận dụng các giá trị Boolean & NBSP;

Trong ví dụ đầu tiên về câu lệnh IF/ELSE, chúng tôi đã giảm mã thành một dòng mã trong khi vẫn sử dụng câu lệnh IF/ELSE như thế này & NBSP;

"N" if lat < 0 else "S"

Không cần phải có các câu lệnh IF/ELSE. Thay vào đó, chúng ta có thể sử dụng các giá trị Boolean. Trong Python,

Output 
S
E
2 bằng
Output 
S
E
3 và
Output 
S
E
4 bằng
Output 
S
E
5. Vì vậy, chúng ta có thể viết một đoạn mã như thế này, điều này có vẻ kỳ lạ lúc đầu.

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

0

Nhưng chúng ta hãy xem qua ví dụ chi tiết. Đoạn trích đầu tiên kiểm tra xem vĩ độ có nhỏ hơn 0 hay không và đặt nó thành

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

4 cho Bắc hay
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

7 cho miền Nam. Các lợi nhuận có điều kiện là sai trong ví dụ đầu tiên về vĩ độ và đúng trong ví dụ thứ hai của vĩ độ.

Bây giờ, phần tiếp theo là chọn chuỗi chỉ mục. Vì vậy, vĩ độ đầu tiên là

Output 
S
E
8 và nó không nhỏ hơn 0, do đó, nó sai, và do đó chúng tôi chọn chỉ số 0 của chuỗi, là
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

4. Vĩ độ thứ hai là
print["N" if lat < 0 else "S"]
print["E" if long < 0 else "W"]
0; Do đó, điều kiện là đúng và do đó nó trả về chuỗi tại Index One,
lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

7.

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

1

Bây giờ bạn đã hiểu cách sử dụng hiệu quả các loại dữ liệu Boolean để mô phỏng các câu lệnh nếu/khác, hãy để viết một chức năng thực tế hơn định dạng tọa độ thành các mức độ của số thập phân.

lat = 32.56
long = -84.12

# Latitude
if lat < 0:
    print["N"]
else:
    print["S"]

# Longitude
if long < 0:
    print["E"]
else:
    print["W"]

2

Thêm tài nguyên cho bộ công cụ Python của bạn Khả năng đọc của tập lệnh Python của bạn với 1 công cụ đơn giảnIncrease the Readability of Your Python Script With 1 Simple Tool

Mang đi

Python có những cách tuyệt vời, tinh tế để viết mã hấp dẫn, súc tích và pythonic hơn. Mã tái cấu trúc là một nghệ thuật, và chúng ta nên liên tục cố gắng & nbsp; cải thiện khả năng đọc và hiệu suất của mã của chúng tôi. Viết thêm các tuyên bố có điều kiện pythonic chỉ là một cách để làm điều đó!

Bài Viết Liên Quan

Chủ Đề