如何减少Python中的多个if语句

S A*_*rew 2 python if-statement

我有下面的代码片段:

amountLst = []
for i in range(9):
    hsv = ""
    if i == 0:
        hsv = cv2.cvtColor(barc0Img, cv2.COLOR_BGR2HSV)
    elif i == 1:
        hsv = cv2.cvtColor(barc1Img, cv2.COLOR_BGR2HSV)
    elif i == 2:
        hsv = cv2.cvtColor(barc2Img, cv2.COLOR_BGR2HSV)
    elif i == 3:
        hsv = cv2.cvtColor(barc3Img, cv2.COLOR_BGR2HSV)
    elif i == 4:
        hsv = cv2.cvtColor(barc4Img, cv2.COLOR_BGR2HSV)
    elif i == 5:
        hsv = cv2.cvtColor(barc5Img, cv2.COLOR_BGR2HSV)
    elif i == 6:
        hsv = cv2.cvtColor(barc6Img, cv2.COLOR_BGR2HSV)
    elif i == 7:
        hsv = cv2.cvtColor(barc7Img, cv2.COLOR_BGR2HSV)
    elif i == 8:
        hsv = cv2.cvtColor(barc8Img, cv2.COLOR_BGR2HSV)
    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)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在检查 的值i并根据它选择适当的 HSV。有没有更好的方法来避免多个 if 语句?

小智 7

您可以使用包含以下内容的列表barc<int>Img

barcImg = [
    barc0Img,
    barc1Img,
    barc2Img,
    ...
]


amountLst = []
for i in range(9):
    hsv = cv2.cvtColor(barcImg[i], cv2.COLOR_BGR2HSV)
    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)
Run Code Online (Sandbox Code Playgroud)