什么是Python中两个条件(A和B,A或B)的评估顺序?

时间:2015-08-30 05:53:38

标签: python conditional-statements

例如在while A and B中,如果A为False,则无需评估B.那么在这种情况下是否会评估B? 同样,在if A or B中,如果A为True,则无需评估B.

特定上下文是this problem,我写了

def summaryRanges(self, nums):
    """
    :type nums: List[int]
    :rtype: List[str]
    """
    output = []

    i = 0

    while ( i < len(nums) ):

        head = nums[i]


        while ( i <= len(nums)-2 ) and (nums[i+1] == nums[i] + 1): ### question here
                i += 1

        tail = nums[i]

        if head == tail:
            output.append(str(head))
        else:
            output.append(str(head) + '->' + str(tail))

        i += 1

我不知道它是否有效(受到其他错误的困扰)。在这里注释的问题&#39;,(nums[i+1] == nums[i] + 1)会导致索引超过字符串长度i==len(nums)-1,所以我添加( i <= len(nums)-2 )试图阻止它。

有关如何修复/避免/规避这一点的任何建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

andor执行短路。请注意,表达式的值始终是其中一个操作数的值,不一定是TrueFalse