在python中利用try..except来代替if..else的用法


Posted in Python onDecember 19, 2019

在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。

比如在判断一个链表是否存在环的leetcode题目中,初始代码是这样的

# Definition for singly-linked list.
# class ListNode(object):
#   def __init__(self, x):
#     self.val = x
#     self.next = None

class Solution(object):
  def hasCycle(self, head):
    """
    :type head: ListNode
    :rtype: bool
    """
    if head == None:
      return False
    slow =  head
    fast = head.next
    while(fast and slow!=fast):
      slow = slow.next
      if fast.next ==None:
        return False
      fast = fast.next.next
    return fast !=None

在 while循环内部,fast指针每次向前走两步,这时候我们就要判断fast的next指针是否为None,不然对fast.next再调用next指针的时候就会报异常,这个异常出现也反过来说明链表不存在环,就可以return False。

所以可以把while代码放到一个try …except中,一旦出现异常就return。这是一个比较好的思路,在以后写代码的时候可以考虑替换某些if…else语句减少不必要的判断,也使得代码变的更简洁。

修改后的代码

# Definition for singly-linked list.
# class ListNode(object):
#   def __init__(self, x):
#     self.val = x
#     self.next = None

class Solution(object):
  def hasCycle(self, head):
    """
    :type head: ListNode
    :rtype: bool
    """
    if head == None:
      return False
    slow =  head
    fast = head.next
    try:
      while(fast and slow!=fast):
        slow = slow.next
        fast = fast.next.next
      return fast !=None
    except:
      return False

以上这篇在python中利用try..except来代替if..else的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Python如何获取系统iops示例代码
Sep 06 Python
Zabbix实现微信报警功能
Oct 09 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
keras 多gpu并行运行案例
Jun 10 Python
基于python实现操作redis及消息队列
Aug 27 Python
Python字符串的修改方法实例
Dec 19 #Python
python中property和setter装饰器用法
Dec 19 #Python
python装饰器代替set get方法实例
Dec 19 #Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 #Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 #Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 #Python
Python监控服务器实用工具psutil使用解析
Dec 19 #Python
You might like
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
express启用https使用小记
2019/05/21 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python中encode()方法的使用简介
2015/05/18 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Python解析json代码实例解析
2019/11/25 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
母亲节感恩活动记录
2014/03/16 职场文书
单位委托书怎么写
2014/08/02 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
Nginx 匹配方式
2022/05/15 Servers
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS