在Python中是否有特纳利条件操作器?
当前回答
从文档中:
条件表达式(有时称为“永久运营商”)具有所有 Python 操作的最低优先事项. 表达式 x 如果 C 其他 y 首先评估条件, C (不是 x); 如果 C 是真实的, x 被评估并返回值; 否则, y 被评估并返回值。
此分類上一篇: 最新版本 2.5.
其他回答
作为Python Enhancement Proposal 308的一部分,2006年在Python中添加了一个条件表达的操作员,其形式不同于常见的?:操作员,它看起来如下:
<expression1> if <condition> else <expression2>
相当于:
if <condition>: <expression1> else: <expression2>
下面是一个例子:
result = x if a > b else y
可使用的另一个合成(可与 2.5 之前的版本兼容):
result = (lambda:y, lambda:x)[a > b]()
工人被精心评估。
另一种方式是通过索引一个<unk>(不符合大多数其他语言的条件运营商):
result = (y, x)[a > b]
或明确构建的词典:
result = {True: x, False: y}[a > b]
另一个(不太可靠),但更简单的方法是使用和和或运营商:
result = (a > b) and x or y
但是,如果 x 是虚假的,它就不会工作。
一个可能的工作岗位是创建 x 和 y 列表或列表如下:
result = ((a > b) and [x] or [y])[0]
或:
result = ((a > b) and (x,) or (y,))[0]
如果您正在使用字典,而不是使用一个温和的条件,您可以利用获得(关键,默认),例如:
shell = os.environ.get('SHELL', "/bin/sh")
来源:?:在维基百科的Python
你可以这样做:
[condition] and [expression_1] or [expression_2];
例子:
print(number%2 and "odd" or "even")
注: 0, 没有, 虚假, 虚假, 和 emptyString 被评为 虚假。
除0以外的任何数据都被评为真实。
如果我们“和”与0(零)的东西,结果将永远是虚假的。
0 and exp
表达式 exp 将不会被评估,因为“和”与 0 将始终被评估为零,并且不需要评估表达式。
在
1 or exp
exp 表达式将不会被评估,因为“或”与 1 将永远是 1. 所以不会打扰评估 exp 表达式,因为结果将是 1 无论如何(计算机优化方法)。
但是,如果
True and exp1 or exp2
同样在
False and exp1 or exp2
exp1 表达式不会被评估,因为 False 相当于 0 写作,并且与 0 做“和”将是 0 本身,但在 exp1 使用“或”之后,它将评估 exp2 表达式后“或”。
[condition] and ([expression_1] or 1) or [expression_2];
你可能经常发现
cond and on_true or on_false
但这会导致一个问题,当 on_true == 0
>>> x = 0
>>> print x == 0 and 0 or 1
1
>>> x = 1
>>> print x == 0 and 0 or 1
1
在哪里你会期望这个结果为一个正常的特纳利运营商:
>>> x = 0
>>> print 0 if x == 0 else 1
0
>>> x = 1
>>> print 0 if x == 0 else 1
1
连接多个运营商的方式:
f = lambda x,y: 'greater' if x > y else 'less' if y > x else 'equal'
array = [(0,0),(0,1),(1,0),(1,1)]
for a in array:
x, y = a[0], a[1]
print(f(x,y))
# Output is:
# equal,
# less,
# greater,
# equal
有多种方式,最简单的是在“印刷”方法中使用状态。
你可以使用
print("Twenty" if number == 20 else "Not twenty")
相当于:
if number == 20:
print("Twenty")
else:
print("Not twenty")
因此,可以打印超过两份声明,例如:
if number == 20:
print("Twenty")
elif number < 20:
print("Lesser")
elif 30 > number > 20:
print("Between")
else:
print("Greater")
可以写作如:
print("Twenty" if number == 20 else "Lesser" if number < 20 else "Between" if 30 > number > 20 else "Greater")
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录