tricks about and-or in python
看python多线程那部份的东西时看到一个好玩的东西,因为我也是初学python。所以写在这里加强一下记忆。
关于and
先看个例子:
1 ‘a' and 'b' and 'c' 2 '' and 'b' 3 'a' and 'b'
这个的输出是:
1 'c' 2 '' 3 'b'
解释一下为什么:
在布尔环境中除了0,‘’,{},[],(),None是假以外,其它几乎所有东西的布尔环境都是真。在用and的时候如果所有的布尔环境都是真,那么返回的是最后一个布尔环境为真的值。
如果有一个为假,则返回第一个布尔环境为假的值。
关于 or
1 'a' or 'b' 2 '' or 'b' 3 '' or {} or None
输出:
1 'a' 2 'b' 3 None
同样给出这段输出的解释:
不难发现or的规则和and是类似的:遇到布尔环境为真的立即返回这个值,所以第一个输出是‘a’,而第二个中‘’为假‘b’为真,所以返回的是‘b’。当所有的值的布尔环境都为假时,返回的是最后一个值。
关于and-or
熟悉c语言或者java语言的一定知道三元预算符这个说法,也就是bool?1:0这种形式,其实and-or和这个类似。
来吧,少年,再举个栗子
1 a = 'first' 2 b = 'second' 3 1 and a or b 4 0 and a or b
输出如下:
1 ‘first’ 2 ‘second’
原因是酱紫的:1为真对吧,所以返回的是a;0为假,所以返回的是b。
但四,这里有陷阱!
比如:
1 a = '' 2 b = 'second' 3 1 and a or b
你猜它的输出是什么
没错,你想错了>~~<!
'second'
因为1 and '' 的值为''(还记得前面说过的吗),'' or 'second'的运算结果是‘second’。
所以在用and-or的时候一定要保证a为真。否则会蛋疼的少年!
那么如何规避这种错误的结果呢,《Dive into python》中给出了思路
你可以这样,这样,然后这样>~<(为毛我第一次写博客这么兴奋啊)
1 a = '' 2 b = 'second' 3 (1 and [a] or [b])[0]
因为[a]是一个非空列表,所以[a]一定是真。
最后要说的是and,or,and-or的远算都是从左往右。
写完鸟》!《
转载于:https://www.cnblogs.com/lianwl/p/3180369.html
tricks about and-or in python相关推荐
- Tricks(二十三)—— Python 实现树这种数据结构
普通二叉树 class Node:def __init__(self, point):self.left = Noneself.right = Noneself.point = point 当然也在构 ...
- 后悔没早知道这些Python特性
写 Python 也好几年时间了.讲道理,在工作中大家肯定遇到过这样的场景: 这个故事告诉我们什么?先造轮子再去 GitHub?还是提高下 GitHub 搜索技巧? 都不是! 实际上,在日常的工作中, ...
- 使用python数据分析_如何使用Python提升您的数据分析技能
使用python数据分析 If you're learning Python, you've likely heard about sci-kit-learn, NumPy and Pandas. A ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 自学python书籍怎么选-自学Python可以选择哪些入门书籍?
最近从阮一峰先生博客看到一个资源链接,这是关于 Python 的学习资源,文章名是<ESSENTIAL RESOURCES TO LEARN ABOUT PYTHON>,这个链接文章中列举 ...
- 转载:Python 的关键字 yield 有哪些用法和用途?
原始链接:https://www.zhihu.com/question/345210030/answer/841903171 Python 的关键字 yield 有哪些用法和用途? 飞鸿 人生到处知何 ...
- 学习python最好的书籍_最好的Python书籍
学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...
- python 3.7 最佳python中文工具书籍下载
筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. 筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3. ...
- 自己的电脑上怎么用python3.7_python 3.7极速入门教程9最佳python中文工具书籍下载...
筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...
- python基础教程 pdf github_Python极速入门的多本最佳书籍,不可错过的Python学习资料...
Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. p ...
最新文章
- 经验 | 详解 Faster R-CNN目标检测的实现过程
- php流媒体视频下载,如何使用PHP流媒体文件?
- 职业相关职位及职位能力要求知识点大纲范围
- 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。
- 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
- css选择器位置和数量技巧
- 自定义日期输入控件-解决需要用户输入日期的麻烦控制
- 基于stc89c58的万年历设计
- psd转html的素材,Ai转PSD格式完美保留图层脚本插件
- Xcode调试中如何将指定地址转换为其指向的对象
- 10-38 A4-7在订单详细信息表中查找包含产品种类数超过特定值的订单信息 (20 分)
- COB--COF--COG--TAB--TCP
- 5.8GHz雷达感应模块应用,智能家居照明技术,微波雷达传感器
- S71200西门子PLC一个设计的接线图
- 正切tan的概念实体化
- 浅谈人机交互设计系统
- Jenkins pipeline push Git tag
- (0091)iOS开发itms-services协议安装IPA安装包
- 大连工作后到外省就业要办的手续
- 抓取设了CSS反爬机制的大众点评数据(下)
热门文章
- thymeleaf获取url地址跳转时所带参数
- python幂运算的符号有哪些及画法_SymPy 符号计算基本教程
- 【CCCC】L3-011 直捣黄龙 (30分),Dijkstra维护点权,节点数,路径条数等+路径打印
- larveral 直接拷贝安装_做一个能引导所有系统的安装盘
- 泽众性能测试软件,软件测试工具-测试管理工具-自动化测试工具-性能测试工具-SPASVO泽众软件测试网...
- 红帽子企业版linux 7,红帽企业 Red Hat Enterprise Linux 7.8 发布
- linux系统编程shell,Linux系统中的 Shell 编程
- 存储过程循环遍历一个月的每一天的函数_3.3 循环
- 字符串(如何输入一行带有空格的字符串)
- 神经网络测试集loss不变_神经网络训练过程中不收敛或者训练失败的原因