python中有elif吗,python中if和elif的区别

  python中有elif吗,python中if和elif的区别

  获得最佳性能的一个简单方法是用所有可能的[a,b]对结果构建一个大表。但是,这可能会消耗大量内存,对于较大的n来说是不现实的。

  以下是一些优化代码的常用方法。在

  1。在逻辑表达式中使用显式and

  正如注释中提到的,由于和的短路操作,这更具可读性和效率。在我的测试中,仅这个变化就将减少60%的运行时间。在

  2。消除冗余条件

  因为a和b的取值范围是从1到{},如果a==n**2,{}就永远实现不了。因此,条件a%n==0和a!=n * * 2且b==A1的A!=n**2校验是多余的。第三种情况也是如此。通过排除这些条件,下面将变得简单。

  elif a % n==0且b==a 1:

  elif(a-1 ) % n==0且b==a - 1:

  3。条件下避免重复计算。

  此外,上述条件也得到了改善。

  A% n==0和b==a 1和{}是ABS(a-b )==1的特例。{cd16因此可以在这些条件下重写。在

  ^{pr2}$

  还要注意,ABS(a-b)值与所有条件相关。因此,可以在检查所有条件之前执行计算。随着这一变化,代码将变成d=ABS(a-b)

  如果d==0:返回6

  elif d==1:

  如果a % n==0,b a:返回0

  elif b % n==0,a b:返回0

  否则返回1

  elif d==n - 1:

  如果a % n==0并且a b:返回1

  elif b % n==0,b a:返回1

  否则返回0

  返回Elid==n: 1

  否则:返回0。

  4。简化逻辑

  比如上面第一个嵌套的if-else可以简化为ifmin(a,b)% n==0: return 0。

  否则返回1

  更简洁的语法是return1ifmin(a,b)% n==0 else 0。

  五个。特定于Python的优化

  Python认为数字0有错误的值。所以对于数量,如果d!=0:和{}分别等价于if d:和{}。后者有点快。应用这一更改将生成以下优化代码:这里使用了更紧凑的语法来缩短答案。At d=ABS(B-a)

  如果不是d:返回6

  elifd==1:return1ifmin(a,b ) % n else 0

  elifd==n-1:return0ifmax(a,b ) % n else 1

  else:如果d==n else 0,则返回1

  通过应用上述步骤2至5,正常运行时间将进一步缩短50%。

  6。根据输入分布调整条件顺序。

  这种变化取决于对APP应用中实际输入分布的理解。目标是更快地恢复更多的公共输入。此示例假设输入A和{}均匀分布在[1,n**2]和{}中。在这种情况下,最常见的情况是d值不匹配任何if条件,检查完所有条件后返回0。要加快速度,先检查D是否可能是非零返回值,这样才能更快失败。At d=ABS(a-b)

  if1dn-1 ordn:return 0 # return 0 ifdisnotin[0,1,n-1,n]

  elifd==1:return1ifmin(a,b ) % n else 0

  elifd==n-1:return0ifmax(a,b ) % n else 1

  else 3360返回1 ifd==n else 6 # d==0 caseismovedtothelast else sincetislatsfrequentlyseen

  7。使用查找表

  通过使用查找表可以实现进一步的加速。在这里,您可以存储第一个条件检查的值[0,1,n-1,n]以加快检查速度。在这种情况下,有两个主要选择。长度为-n ^ 1的一组或一个布尔表。前者占用内存少,后者性能更好。请注意,查找表应该在函数外部构建一次,然后传递给函数。使用布尔列表进行搜索的代码是deffunc(n,a,b,lookup):

  是=ABS (a-b)

  ifnot(d=nandlookup[d]):返回0。

  应用步骤6和7(通过布尔列表搜索)后,执行时间将进一步缩短15%。

  在此示例中,您还可以使用[min(a,b)% n,d]作为索引,以使用作为嵌套列表或字典实现的2D查找表。然而,在步骤6中相同输入分布的假设下,这比1D搜索慢。这是因为额外的索引开销。在

  上面的运行时间是将函数应用于[1,n**2]中所有可能的[a,b]值的总时间。在

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: