@Jon Clements 给了你一个很好的答案:如何使用 Python 成语解决问题。如果其他 Python 程序员看到他的代码,他们会立即理解。这只是使用 Python 的正确方法。
回答你的实际问题:不,那是行不通的。三元运算符具有以下形式:
expr1 if condition else expr2
condition
必须是评估为 a 的东西bool
。三元表达式选择 and 之一expr1
,expr2
就是这样。
当我尝试使用c += 1 if condition else 0
令我惊讶的表达方式时,它起作用了,并在此答案的第一个版本中指出了这一点。@TokenMacGuy 指出,真正发生的是:
c += (1 if condition else 0)
所以你永远不能做你想做的事,即使你放在一个适当的条件而不是某种循环中。上述情况会起作用,但这样的事情会失败:
c += 1 if condition else x += 2 # syntax error on x += 2
这是因为 Python 不将赋值语句视为表达式。
你不能犯这个常见的错误:
if x = 3: # syntax error! Cannot put assignment statement here
print("x: {}".format(x))
在这里,程序员可能想x == 3
测试该值,但输入了x = 3
. Python 通过不将赋值视为表达式来避免此错误。
你不能做错,你也不能故意做。