shu39721
2015-05-08 07:11
采纳率: 50%
浏览 1.6k

python if语句的相关问题

类p有a,b,c三个变量

这一段:

if p1.a>p2.a:
    do
elif p1.a==p2.a:
    do

是进行了一次比较还是两次比较?

这样呢?

if p1.a>p2.a:
    do
elif (p1.a==p2.a and p1.b>p2.b):
    do

是几次比较?

两段比较程序
第一段

 if p1.a>p2.a:
    do
elif  (p1.a==p2.a and p1.b>p2.b):
    do
elif  (p1.a==p2.a and p1.b==p2.b and p1.c>p2.c):
    do

第二段

if p1.a<p2.a:
    pass
elif p1.a>p2.a:
    do
else:
    if p1.b<p2.b:
        pass
    elif p1.b>p2.b:
        do
    else:
        if p1.c>p2.c:
            do

第二段的运行效率会高一些吗?

求更好的解决方法。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Tiger_Zhao 2015-05-08 07:52
    已采纳

    怎么贴格式文本?这是前面的那个表格
    表格

    点赞 打赏 评论
  • oyljerry 2015-05-08 07:28

    第一段的比较次数更少吧。分支判断比第二段少

    点赞 打赏 评论
  • Tiger_Zhao 2015-05-08 07:39
    1. 如果 > 符合,只比较1次。否则比较第2次。
    2. 如果 > 符合,只比较1次。否则: 如果等号不成立,第3次不比较(短路)——2次;再否则是3次。
    3. 列表对比,差别不大。 a b 次数 p1?p2 p1?p2 一 二 < < 3 1 < = 3 1 < > 3 1 = < 5 3 = = 6 5 = > 3 4 > < 1 2 > = 1 2 > > 1 2 合计 26 21 又:比较大小还是很简单的,不必纠结。影响效率的是 do 的复杂度啊。
    点赞 打赏 评论
  • shu39721 2015-05-11 01:09

    个人觉得还是第二种高,可以预先比较好,然后直接if比较结果就行。这样不用每次再进行一次比较运算。但是具体到第一种,还是要进行AND运算,而第二种则不必。

    点赞 打赏 评论

相关推荐 更多相似问题