鱼C论坛

 找回密码
 立即注册
查看: 83|回复: 2

elif和if的区别

[复制链接]
发表于 2024-10-15 10:01:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Solution:
    def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
        nums.sort()
        n = len(nums)
        res = []
        for i in range(n): 
            if i > 0 and nums[i] == nums[i-1]:
                continue
            for j in range(i+1,n):#j的遍历从i的下一位置开始
                if j > i + 1 and nums[j] == nums[j-1]:
                    continue
                l = j + 1
                r = n - 1
                while l < r:
                    if r < n - 1 and nums[r] == nums[r+1]:
                        r -= 1
                    elif l > j + 1 and nums[l] == nums[l-1]:
                        l += 1
                    elif nums[i] + nums[j] + nums[l] + nums[r] == target:
                        res.append([nums[i], nums[j], nums[l], nums[r]])
                        r -= 1
                        l += 1
                    elif nums[i] + nums[j] + nums[l] + nums[r] > target:
                        r -= 1
                    else:
                        l += 1
        return res
上述代码求的是四数之和,写成以下代码的话有什么区别
class Solution:
    def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
        nums.sort()
        n = len(nums)
        res = []
        for i in range(n): 
            if i > 0 and nums[i] == nums[i-1]:
                continue
            for j in range(i+1,n):#j的遍历从i的下一位置开始
                if j > i + 1 and nums[j] == nums[j-1]:
                    continue
                l = j + 1
                r = n - 1
                while l < r:
                    if r < n - 1 and nums[r] == nums[r+1]:
                        r -= 1
                    if l > j + 1 and nums[l] == nums[l-1]:
                        l += 1
                    if nums[i] + nums[j] + nums[l] + nums[r] == target:
                        res.append([nums[i], nums[j], nums[l], nums[r]])
                        r -= 1
                        l += 1
                    elif nums[i] + nums[j] + nums[l] + nums[r] > target:
                        r -= 1
                    else:
                        l += 1
        return res
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-15 10:01:31 | 显示全部楼层
在你的代码中,`if` 和 `elif` 的用法有所区别,主要体现在逻辑结构的执行上。具体区别如下:

1. **`if` 语句:**
   - 每个 `if` 语句都是独立的。即便前一个 `if` 条件为真,这不会阻止后续的 `if` 语句的条件被评估和执行。
   - 你第二个版本的代码中,多个 `if` 语句是互相独立的。

2. **`elif` 语句:**
   - `elif` 是 `else if` 的缩写。它和前面的 `if` 语句组成一个条件判断链,一旦前面的 `if` 或某个 `elif` 为真,则跳过后面的所有 `elif` 和 `else`,不再执行。
   - 在第一个版本中,`elif` 确保了一旦满足某个条件,就不会检查后续条件。

区别的具体影响:

- **逻辑路径不同:**
  - 使用 `elif` 可以避免不必要的条件判断,因为一旦某个条件为真,后续条件就不会被检查。这可能稍微提高一点性能。
  - `if` 却会在每轮循环中检查所有条件,即便前面的条件已经成立。

- **功能逻辑:**
  - 在你的代码中,使用 `elif` 可以避免在某个条件已经为真之后还要检查其他不需要的条件。这对于保持逻辑的准确性和代码的简洁性很有帮助,尤其是在复杂的条件判断中。

总结来说,如果某些条件和逻辑是相互独立的,使用 `if` 是可以的;如果需要按顺序只执行一个条件块,使用 `if-elif-else` 更合适。根据具体的逻辑需求选择合适的使用方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-15 11:45:04 | 显示全部楼层
一旦前面的 `if` 或某个 `elif` 为真,则跳过后面的所有 `elif` 和 `else`,不再执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-4 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表