繁体   English   中英

如何减少代码中 if 语句的数量?

[英]how do i reduce the amount of if statements in my code?

所以我的代码有很多 if 语句:

            rnrp += 1
        if a100 == b100:
            rnrp += 1
        if a10 == b10:
            rnrp += 1
        if a1 == b1:
            rnrp += 1

和:

            if b1000 == a100:
                rnwp += 1
                break
            if b1000 == a10:
                rnwp += 1
                break
            if b1000 == a1:
                rnwp += 1
            break
        while true:
            if b100 == a1000:
                rnwp += 1
                break
            if b100 == a10:
                rnwp += 1
                break
            if b100 == a1:
                rnwp += 1
            break
        while true:
            if b10 == a1000:
                rnwp += 1
                break
            if b10 == a100:
                rnwp += 1
                break
            if b10 == a1:
                rnwp += 1
            break
        while true:
            if b1 == a1000:
                rnwp += 1
                break
            if b1 == a100:
                rnwp += 1
                break
            if b1 == a10:
                rnwp += 1
            break 

如您所见,这是很多 if 语句,第一个很好,但第二个需要改进。 同样,第二个代码试图完成的是检查 b 的每个位置(100 的位置、100 的位置、10 的位置等)与 a 的任何位置匹配。 如何减少代码第二部分中 if 语句的数量? 这篇文章已由 jasonharper 回答(我现在找不到按钮,所以我只是把它放在问题中)谢谢!!

您可以使用listdict类的集合来减少操作次数。 例如,

    while true:
        if b100 == a1000:
            rnwp += 1
            break
        if b100 == a10:
            rnwp += 1
            break
        if b100 == a1:
            rnwp += 1
        break

可能

        if b100 in [a1000, a10, a1]:
            rnwp += 1

由于您经常重复这些模式中的一些,您可以事先制作一些这些列表并重复使用它们。 使用字典甚至可能很有用,这样您就不必单独记住变量。

使用 elif 语句。 除此之外,您在那里无能为力。 使用许多 if 语句可能会令人困惑,但只要您的代码是干净的,您就可以将其关闭。

我会缩短它的方式:

Boolean_value = True
while Boolean_value:
    if b100 == a1000: rnwp, Boolean_value = rnwp + 1, False 
    if b100 == a10: rnwp, Boolean_value = rnwp + 1, False 
    if b100 == a1: rnwp, Boolean_value = rnwp + 1, False 

如果你想要一个 if 语句并且 if 语句只有一个表达式,它非常有用。 您也可以在一行中更改多个值。

您可以使用 itertools 中的 product 并在一行中完成所有操作:

from itertools import product 

rnwp += sum(b==a for b,a in product([b1000,b100,b10,b1],[a1000,a100,a10,a1]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM