我目前正在从事一个项目,其中有许多不同的会计工作,我经常看到这种模式:
if A > X:
B += 1
else:
C += 1
我知道三元运算符,但如果我理解正确,使用它的最短方法是:
B += 1 if A > X else False
C += 1 if A <= X else False
因为三元运算符连接到其头部使用的变量。因此,从计算性和可读性的角度来看,使用三元运算符显然比以前的if/else
更糟糕
另一个想法是创建一个简单的函数,如下所示:
conditional_bumper(positive_case_var, negative_case_var, condition_var, compare_to=0)
然后,用法如下所示:
conditional_bumper(B, C, A, X) # X being optional
因此,我每次看到它都可以写一行,但同时在我看来,这似乎是一个非常“黑客”的解决方案。有没有更好的办法让我看不见
如果您真的只需要一行代码,而不关心可读性(您不应该这么做),那么您可以使用这个老把戏(代价是构建一个列表并生成一个有点神秘的代码)
请注意
C
和B
本身没有修改,更改仅通过CB
列表可见这是因为
A > X
的计算结果为True
或False
,这可用于索引bool
子类int
使用dict的更好方法
另一个不那么神秘的选择是使用
dict
。我认为这实际上是一个更好的选择。您甚至可以使用全名:)我认为您的代码可读性越高,越好。“一行”代码可以工作,但不可行
增强使用函数的想法:
这是非常可读的,因为它可以从左到右读取为“increment if A>;X”,后跟if子句中的变量,最后是else子句中的变量
除非使用全局变量,否则函数需要返回变量并重新赋值
相关问题 更多 >
编程相关推荐