【发布时间】:2017-11-22 00:30:29
【问题描述】:
使用 Python (2.7) 三元表达式 x if cond else y 在计算这些按顺序嵌套的多个表达式时的逻辑顺序是什么:例如
1 if A else 2 if B else 3
为此绘制真值表似乎被评估为1 if A else (2 if B else 3)而不是(1 if A else 2) if B else 3:
A True False
B
True 1 2
False 1 3
有人能解释一下为什么按这个顺序执行吗,并可能提出一些材料来直观地说明为什么使用/首选它?
在考虑使用内联 for 语句进行排序时,这似乎并不明显:
>>>[(i, j, k) for i in range(1) for j in range(2) for k in range(3)]
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 1, 0), (0, 1, 1), (0, 1, 2)]
【问题讨论】:
-
for循环与三元条件不同 -
机器人循环和三元条件从左到右求值,完全一样...
-
这不是“inline for 语句”。
-
哇,没有一个受访者将您的问题理解为左结合性问题 — 对于一门语法吸引无法解析的人的语言来说,这不足为奇,但仍然......
标签: python for-loop nested ternary-operator