一个小示例告诉你Python语言的优雅之处


Posted in Python onJuly 04, 2014

比如, 我们希望希望检测"一段string是否以特定的字符串结尾?", 通常我们使用:

if needle.endswith('ly') or needle.endswith('ed') or
    needle.endswith('ing') or needle.endswith('ers'):
    print('Is valid')
  else:
    print('Invalid')

十分丑陋是吧? 如果我们检测变量needle是否是以下特定字符串之一的话, 会这样写:

if needle in ('ly', 'ed', 'ing', 'ers'):
    print('Is valid')
  else:
    print('Invalid')

但是, 我们无法在 endswith function 中使用 in, 但我们换一种想法, 我们需要检查的其实是"一段string的结尾是否是以下字符串的任意一个?", 我们会发现python有内部函数any, 于是我们的代码可以改为:

if any([needle.endswith(e) for e in ('ly', 'ed', 'ing', 'ers')]):
    print('Is valid')
  else:
    print('Invalid')

相信很多读者在此会不同意我的做法, 或者有更好的写法存在. 但这已经不重要. 我明白你们大多数都会使用类似的写法面对这一相似的问题. 我真正的目的其实是展示一下Python的优雅之处.

Python 相关文章推荐
python 调用c语言函数的方法
Sep 29 Python
Python使用三种方法实现PCA算法
Dec 12 Python
python2.7实现爬虫网页数据
May 25 Python
python散点图实例之随机漫步
Aug 27 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
Python类继承和多态原理解析
Feb 05 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
Python如何执行系统命令
Sep 23 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 #Python
Python Deque 模块使用详解
Jul 04 #Python
Python中的二叉树查找算法模块使用指南
Jul 04 #Python
深入分析在Python模块顶层运行的代码引起的一个Bug
Jul 04 #Python
python之import机制详解
Jul 03 #Python
Python之eval()函数危险性浅析
Jul 03 #Python
python的绘图工具matplotlib使用实例
Jul 03 #Python
You might like
php 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
python比较两个列表是否相等的方法
2015/07/28 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
Python的互斥锁与信号量详解
2019/09/12 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
中间件分为哪几类
2016/09/18 面试题
企业承诺书格式
2014/05/21 职场文书
大学生年度个人总结
2015/02/15 职场文书
Mysql开启外网访问
2022/05/15 MySQL