小编wha*_*pin的帖子

为什么如果我用“and”运算符交换两个条件的位置,结果会有所不同?

所以我正在做一个名为“缺失数字”的练习,我不明白为什么这个语句会导致列表索引超出范围错误。

if nums[i] != nums[j] and nums[i] < len(nums):
Run Code Online (Sandbox Code Playgroud)

但是当我使用这种条件时,代码有效:

if nums[i] < len(nums) and nums[i] != nums[j]:
Run Code Online (Sandbox Code Playgroud)

这两行代码在功能上不是完全相同吗?我在想这可能是优先顺序问题,但即使我将其放在括号中,仍然存在超出范围的错误。

下面是完整的代码:

 def missingNumber(self, nums: List[int]) -> int:
    i, n = 0, len(nums)
    while i < n:
        j = nums[i]
        if nums[i] != nums[j] and nums[i] < n:
            nums[i], nums[j] = nums[j], nums[i]
        else:
            i += 1
    
    for i in range(n):
        if i != nums[i]:
            return i
        
        
    
Run Code Online (Sandbox Code Playgroud)

python algorithm if-statement

0
推荐指数
1
解决办法
39
查看次数

标签 统计

algorithm ×1

if-statement ×1

python ×1