当前位置:  开发笔记 > 编程语言 > 正文

Python条件运算符解决方法如何工作?

如何解决《Python条件运算符解决方法如何工作?》经验,为你挑选了4个好方法。

根据我的阅读,我发现内置的三元运算符不存在(我很乐意了解它).

我发现以下代码作为替代:

def val():
    var = float(raw_input("Age:"))
    status = ("Working","Retired")[var>65]
    print "You should be:",status

我无法理解这段代码是如何工作的; 任何人都可以解释我实际上代码是如何工作的?我也很想知道为什么三元运算符不存在; 任何关于此的参考或链接都是有用的.

我在Windows Vista上运行Python 2.6.4.



1> mipadi..:

Python有一个类似于C等人的三元运算符的结构.它的工作原理如下:

my_var = "Retired" if age > 65 else "Working"

并且相当于这个C代码:

my_var = age > 65 ? "Retired" : "Working";

至于你发布的代码如何工作,让我们一步一步:

("Working","Retired")

创建一个2元组(一个不可变列表),其元素"Working"在索引0处,"Retired"在索引1处.

var>65

如果var大于65则返回True,否则返回False.应用于索引时,它将转换为1(True)或0(False).因此,此布尔值提供在同一行上创建的元组的索引.

为什么Python一直没有三元运算符?简单的答案是,Python的作者Guido van Rossum不喜欢/不想要它,显然认为这是一个不必要的结构,可能导致令人困惑的代码(以及任何看过大量嵌套的三元运算符的人) C可能会同意).但对于Python 2.5,他心软了并添加了上面的语法.


我记得坐在OSCON*主题演讲中,Guido谈到了为什么他*没有把三元运算符放到Python中.考虑一下,大量不同的开发人员和技术人员和演讲者正在谈论30年前的旧闻新闻*没有实现*的语言特定功能的细节.没有尝试提出更广泛的观点.我经历过的最无聊的主题演讲.

2> TM...:

Python(2.5及以上版本)确实具有您正在寻找的语法:

x = foo if condition else bar

如果condition为True,x则将设置为foo,否则将设置为bar.

例子:

>>> age = 68
>>> x = 'Retired' if age > 65 else 'Working'
>>> x
'Retired'
>>> age = 35
>>> y = 'Retired' if age > 65 else 'Working'
>>> y
'Working'


只是提醒一下,这仅适用于2.5或更高版本.旧版本没有类似的东西.

3> mozillalives..:

因为True转换为1而False转换为0所以如果var = 70

("Working","Retired")[var>65]

("Working", "Retired")[1]

一个不错的小捷径...但我发现除了一个简单的条件外,它可能有点令人困惑,所以我会选择TM的建议

"Retired" if var > 65 else "Working"



4> tzot..:

索引到列表中

指某东西的用途

[expression_when_false, expression_when_true][condition] # or
(expression_when_false, expression_when_true)[condition]

利用Python中的事实True等于(但不是!)1和False等于(但不是!)0.上面的表达式构造了两个元素的列表,并使用条件的结果来索引列表并只返回一个表达式.该方法的缺点是两个表达式都被评估.

和/或快捷方式

自从创建Python以来,有一种形式的操作:

condition and expression_when_true or expression_when_false

这需要一个快捷方式并且只评估一个表达式,但是有一个容易出错的缺点:expression_when_true 不能求值为非真值,否则结果为expression_when_false.and并且or在Python中"短路",并且以下规则适用:

a and b #? a if a is false, else b
a or b  #? a if a is true, else b

如果条件不成立,则expression_when_true从未评估,结果是expression_when_false.OTOH,如果条件为真,则结果为(expression_when_trueexpression_when_false)的结果; 请参考上表.

三元条件算子

当然,从Python 2.5开始,有一个三元条件运算符:

expression_when_true if condition else expression_when_false

奇怪的(如果你习惯于C类三元条件运算符)操作数的顺序归因于很多东西 ; 一般意图是条件在大多数时候应该是真实的,因此最常见的输出是第一个并且是最明显的.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有