为了账号安全,请及时绑定邮箱和手机立即绑定

Python在循环前评估ifs

Python在循环前评估ifs

慕仙森 2021-05-10 17:18:14
def fun(x):    for k in range(10):        found = False        if x < 12 and other(k):            dostuff()            found = True        if x == 4 and other2(k):            dostuff()            found = True        if not found:            dootherstuff(k)我有这个代码。我的问题是,由于x不变,是否可以事先评估这些if语句?该代码应执行与以下操作相同的操作: def fun(x):    if x == 4:        for k in range(10):            if other2(k):               dostuff()            else:               dootherstuff(k)    if x < 12:       for k in range(10):            if other(k):               dostuff()            else:               dootherstuff(k)或者def fun(x):    for k in range(10):        if x == 4 and other2(k) or x < 10 and other(k):           dostuff()         else:           dootherstuff(k)但是,由于这两个都是非常干燥且丑陋的,所以我想知道是否有更好的选择。在我的真实代码中,我有更多的语句,但是我只需要对X的某些值进行循环中的特定检查,并且我不想在每次迭代中都检查X,因为它不会改变。
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

认为这应该工作相同:


 def fun(x):

    for k in range(10);

        if x < 12 and other(k):

           dostuff()

        elif x == 4 and other2(k):

           dostuff()

        else:

           dootherstuff(k)


查看完整回答
反对 回复 2021-05-18
?
SMILET

TA贡献1796条经验 获得超4个赞

您可以执行以下操作


def fun(x):

    cond1 = x < 12

    cond2 = x == 4



    for k in range(10):

        found = False

        if cond1 and other(k):

            dostuff()

            found = True

        if cond2 and other2(k):

            dostuff()

            found = True


        if not found:

            dootherstuff(k)


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信