【Python】: 容易被忽略的一个小问题:int 变量判断是否是None时怎么判断?

【Python】: 容易被忽略的一个小问题:int 变量判断是否是None时怎么判断?,第1张

【Python】: 容易被忽略的一个小问题:int 变量判断是否是None时怎么判断?

最近在刷题【牛客剑指offer刷题】:Python:18. 删除链表的节点
时,遇到这样一个问题,由于写错了一句话导致怎么也不通过,最后发现原来是判断 int 为 0 时判断为 False 了, 这里记录一下:

输入:{2, 3, 4, 0, 1}, 0

错误的代码:
class Solution:
    def deleteNode(self , head: ListNode, val: int) -> ListNode:
        # write code here
        # 注意:这里的val如果为0 的话那么判断not val就是TRUE
        if not head or not val:
            return None
        if head.val == val:
            return head.next
        pre, cur = None, head
        while cur:
            if cur and cur.val == val:
                cur  = pre
                cur.next = cur.next.next
            else:
                pre = cur
                cur = cur.next
        return head

错误的输出:{}

正确的代码:
class Solution:
    def deleteNode(self , head: ListNode, val: int) -> ListNode:
        # write code here
        # 注意:这里的val如果为0 的话那么判断val is None就是False
        if not head or val is None:
            return head
        if head.val == val:
            return head.next
        pre, cur = None, head
        while cur:
            if cur and cur.val == val:
                cur  = pre
                cur.next = cur.next.next
            else:
                pre = cur
                cur = cur.next
        return head

正确输出:{4,1,9}

总结:

以后需要判断 int 变量是否是None值时:不能使用if not val而应该使用if val is None。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5593421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存