鱼C论坛

 找回密码
 立即注册
查看: 2187|回复: 5

[已解决]求大神帮忙说说三元操作符。

[复制链接]
发表于 2013-12-21 00:32:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题。。。。。

最佳答案
2018-12-1 11:06:59
1、先练练兵,请自己在python shell 中敲一下。

示例:
In [1]: x , y = 6, 8
In [2]: z = x if x > y else y
In [3]: z
Out[3]: 8

2、语法形式,既然是操作符,那么由操作符可以构成表达式。表达式有一个值,可以参与运算或者赋值给变量。

表达式1 if 条件 else 表达式2 构成一个表达式。

整个表达式的值,是这样计算的,如果if 后面的条件为真,整个三元操作符构成的表达式值为表达式1的值,如果为假,整个表达式的值为表达式2的值。

示例:
In [1]: x , y = 6, 8
In [2]: z = x if x > y else y
In [3]: z
Out[3]: 8
In [4]: z = x if x < y else y
In [5]: z
Out[5]: 6

3、三元操作符的替代写法。

示例:
In [6]: z = (lambda:y, lambda:x)[x > y]()
In [7]: z
Out[7]: 8

In [8]: z = (lambda:y, lambda:x)[x < y]()
In [9]: z
Out[9]: 6

In [10]: z = (y, x)[x > y]
In [11]: z
Out[11]: 8

In [12]: z = (y, x)[x < y]
In [13]: z
Out[13]: 6

In [14]: z = {True: x, False: y}[x > y]
In [15]: z
Out[15]: 8

In [16]: z =  (x > y) and x or y
In [17]: z
Out[17]: 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-21 00:59:57 | 显示全部楼层
可以  问问 小甲鱼啊?不是新出了 Python的 视频吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-21 20:16:07 | 显示全部楼层
如果你来自 C/C++ 或者是 Java 世界, 那么你很难忽略的一个事实就是 Python 在很长的一 段时间里没有条件表达式(C ? X : Y), 或称三元运算符. ( C 是条件表达式; X 是 C 为 True 时 的结果, Y 是 C 为 False 时的结果) 贵铎·范·罗萨姆一直拒绝加入这样的功能, 因为他认为应 该保持代码简单, 让程序员不轻易出错. 不过在十年多后, 他放弃了, 主要是因为人们试着用 and 和 or 来模拟它, 但大多都是错误的. 根据 FAQ , 正确的方法(并不唯一)是 (C and [X] or [Y])[0] . 唯一的问题是社区不同意这样的语法. (你可以看一看 PEP 308, 其 中有不同的方案.) 对于Python 的这一问题,人们表达了极大的诉求. 贵铎·范·罗萨姆最终选择了一个最被看好(也是他最喜欢)的方案, 然后把它运用于标准库中 的一些模块. 根据 PEP , "这个评审通过考察大量现实世界的案例, 包含不同的应用, 以及由不同 程序员完成的代码." 最后 Python 2.5 集成的语法确定为: X if C else Y .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-21 20:16:58 | 显示全部楼层
详细使用可以参考《零基础入门学习Python》第8讲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-21 20:28:46 | 显示全部楼层
学习学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 11:06:59 | 显示全部楼层    本楼为最佳答案   
1、先练练兵,请自己在python shell 中敲一下。

示例:
In [1]: x , y = 6, 8
In [2]: z = x if x > y else y
In [3]: z
Out[3]: 8

2、语法形式,既然是操作符,那么由操作符可以构成表达式。表达式有一个值,可以参与运算或者赋值给变量。

表达式1 if 条件 else 表达式2 构成一个表达式。

整个表达式的值,是这样计算的,如果if 后面的条件为真,整个三元操作符构成的表达式值为表达式1的值,如果为假,整个表达式的值为表达式2的值。

示例:
In [1]: x , y = 6, 8
In [2]: z = x if x > y else y
In [3]: z
Out[3]: 8
In [4]: z = x if x < y else y
In [5]: z
Out[5]: 6

3、三元操作符的替代写法。

示例:
In [6]: z = (lambda:y, lambda:x)[x > y]()
In [7]: z
Out[7]: 8

In [8]: z = (lambda:y, lambda:x)[x < y]()
In [9]: z
Out[9]: 6

In [10]: z = (y, x)[x > y]
In [11]: z
Out[11]: 8

In [12]: z = (y, x)[x < y]
In [13]: z
Out[13]: 6

In [14]: z = {True: x, False: y}[x > y]
In [15]: z
Out[15]: 8

In [16]: z =  (x > y) and x or y
In [17]: z
Out[17]: 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 05:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表