在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 相关文章推荐
Python中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
在Python中使用mechanize模块模拟浏览器功能
May 05 Python
python插入排序算法实例分析
Jul 03 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
python调用百度REST API实现语音识别
Aug 30 Python
python实现Zabbix-API监控
Sep 17 Python
pymysql的简单封装代码实例
Jan 08 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
Django 如何实现文件上传下载
Apr 08 Python
Python实现抖音热搜定时爬取功能
Mar 16 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 高手之路(一)
2006/10/09 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
php中如何执行linux命令详解
2018/11/06 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
基于Python os模块常用命令介绍
2017/11/03 Python
python面试题之列表声明实例分析
2019/07/08 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
.net面试题
2015/12/22 面试题
机修工工作职责
2014/02/21 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
元宵节晚会主持词
2015/07/01 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL