python - 如何减少python中的多个if语句

标签 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)

如您所见,我正在检查 i 的值并根据它选择合适的 hsv。有没有更好的方法通过避免多个 if 语句来做到这一点。谢谢

最佳答案

您可以使用包含 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)

关于python - 如何减少python中的多个if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71526214/

相关文章:

python - Tensorflow:Logits 和标签必须具有相同的第一维

javascript - 如果执行了 "if...else if"中的任何一个,则运行代码?

ios - UIScrollview 中的 ContentOffset 问题

java - 我可以使用 Java 中的 if/else 语句向字符串添加单词吗?

python - 将转换器与 read_csv 一起使用时获取错误行

python - 模块未找到错误 : No module named 'matplotlib'

bash - 如何在 bash 脚本中为 if 条件组合 AND 和 OR 条件?

java - 如何通过说字符串的一部分不等于字符串中的位置来使此 else-if 语句起作用?

python - 在Python中提取名字和姓氏

python - 如何在 django 登录页面中添加 otp 身份验证