杭州西湖区Python培训多久能学会
Python课程内容
Python基础
Python概述环境搭建、入门程序数据类型、变量基本运算符if选择结构while循环列表、for循环元组、集合字典操作字符串操作日期模块(datetime)使用函数系统模块os操作模块sys数学模块math文件IO面向对象:概述、封装面向对象:继承、多态异常处理自定义模块及使用数据库
Linux概述Python环境搭建微信飞机大战ubuntu开发MySQL数据库概述MySQL安装MySQL单表增删改查外键约束多表查询Python操作MySQLmongoDB入门mongoDB进阶Redis概述Redis安装Redis常见命令
Python核心
Python内存分析列表*操作函数*操作正则表达式案例操作网络编程多进程-多线程
前端开发
HTML概述入门程序、文档结构常见行级标签常见块级标签样式概述常见文本修饰样式尺寸修饰样式定位样式盒子模型网页项目开发JavaScript概述基础语法事件操作DOM操作常见**开发Ajax操作JQuery概述插件使用、Ajax操作Bootstrap常见全局样式常见插件的使用
Django Web框架
Web基础Django入门数据模型Model视图操作Views\路由操作模板操作Template后台管理系统表单处理、数据安全常见问题:ajax、分页等项目协同开发项目部署、分布式处理项目开发Tornado入门Tornado请求处理流程静态文件及模板的操作Tornado数据库操作Tornado安全应用Tornado异步操作WebSocketNginx下载、配置新闻发布平台项目开发
数据爬虫
爬虫原理与数据爬取urllib2爬虫*操作数据提取requests模块BeautifulSoup4Scrapy框架概述深度爬虫Scrapy分布式爬虫入门Scpary-Redis分布式爬虫Scrapy-Redis实战案例
人工智能
数据结构与算法人工智能核心概念机器学习常见算法深度学习常见算法数据分析数据可视化
and-or并列
前言:Python中,没有像
cond_expression?expression1:expression2
这样的三元运算符,但是由于Python语法上的灵活,我们称下面的语句为python的三元运算符,即:
expression if condition_expression1 else expression2
但是这个我们今天不说,今天说一下使用and-or 依然可以实现三元运算类似的效果,
In [1]: a="hello" In [2]: b="world" In [3]: c=1 and a or b #等价于 True and a or b In [4]: c Out[4]: 'hello' In [5]: c=0 and a or b #等价于 False and a or b In [6]: c Out[6]: 'world'
从效果上来看这跟三元运算确实很像,虽然看起来效果确实是三元运算,但是需要注意的是跟前面的多个and,多个or一样,and、or 、and-or它们连接的一定是条件表达式,单独的一个数字、一个变量、一个字符串都是转化为条件表达式之后来解析的,这涉及到其它数据类型与bool类型之间的转换。所以下面来分析一下and-or的本质
In [1]: a="hello" In [2]: b="world" In [3]: c=1 and a or b #等价于 True and a or b In [4]: c Out[4]: 'hello'
解析:因为1是True、a="hello"转化为bool类型也为True,先运算
1 and a,两个True进行and运算,根据前面讲的规则返回后一个True,即返回a,因为a是True,b="world"也是True,两个True进行or运算,返回一个,即返回a,这就是为什么后返回a的原因了。
再看一下下面这个:
In [5]: c=0 and a or b #等价于 False and a or b In [6]: c Out[6]: 'world'
解析:因为0是False、a="hello"转化为bool类型也为True,先运算
0 and a,一个False和一个True进行and运算,根据前面讲的规则返回一个False,即返回0,又因为b="world"也是True,一个False和一个True进行or运算,返回一个为真的结果,即返回b,这就是为什么后返回b的原因了。
再看一下下面这个:
In [7]: a=0 In [8]: b=1 In [9]: c=True and a or b In [10]: cOut[10]: 1 In [11]: c=False and a or b In [12]: c #为什么依然返回1呢? Out[12]: 1
解析:因为a=0,即a为False,当前面的条件为True的时候,True与False进行and运算,返回False,即a,当前面的条件为False的时候,False与False进行or运算,还是返回后的那个False,即a,无论前面的是True还是False,一个返回的总是a,因为a为False,在与后面的b进行or运算,当b是真的时候,返回b,当b为False的时候还是返回b,所以出现了上面的结果。
问题:只要and-or中间的那个表达式转化成bool类型之后是False,无论and前面和or后面是什么,终的结果必然是返回or后面的b,这就失去了三元运算的效果。
为了解决这样的问题该怎么办呢?
我们可以这样做
解决办法:
根据上面的分析我们知道,解决这个问题的关键是在与如何增加and-or中间的那个表达式为True才行,所以我们可以将中间的那个表达式作为列表的一个元素,无论这个元素是真是假,列表总是不会为空的,也就不会为False,也就增加了and-or中间的部分为True,如下所示:
cond_expr1 and [cond_expr2] or cond_expr3 #将and-or中间的表达式用列表包装,增加为True
看下面的例子:
In [7]: a=0 In [8]: b=1 In [13]: d=True and [a] or b In [14]: d #返回的虽然不是a,二十[a],但是已经到到了三元运算的效果 Out[14]: [0] In [15]: d=False and [a] or b In [16]: d #返回的是b Out[16]: 1
这就实现了使用and-or语句实现三元运算的目的。
1.4 总结
需要注意的是,我们是根据逻辑分析,让and-or语句达到三元运算的效果,但是本质上来说它并不是三元运算符哦,其实无论怎么组合,我们记住and和or运算的一般原则即可,这是1.1和1.2里面所说的内容,正所谓万变不离其宗,and-or的本质依旧是逻辑运算,把握本质,怎么变化都不怕!
更多培训课程,学习资讯,课程优惠等学校信息,请进入 杭州拱墅区Web培训杭州西湖区Python培训杭州滨江区Linux云计算培训 网站详细了解,免费咨询电话:400-998-6158