能否将Python中这段条件判断代码改写为一行代码?
问题
我有一段Python程序,完整代码如下:
from collections import Counter def balance(left, right, result = 0): wages = {'!': 2, '?': 3} for key in Counter(left).keys(): result += Counter(left).get(key) * wages.get(key) for key_ in Counter(right).keys(): result -= Counter(right).get(key_) * wages.get(key_) if result == 0: return 'Balance' return 'Left' if result > 0 else 'Right'
请问能不能把这段条件判断代码改成一行?
if result == 0: return 'Balance' return 'Left' if result > 0 else 'Right'
改写方案
完全可以,用嵌套三元表达式就能把这段逻辑浓缩成一行:
return 'Balance' if result == 0 else 'Left' if result > 0 else 'Right'
如果觉得嵌套的三元表达式可读性差点,可以加个括号明确优先级,看起来更清楚:
return 'Balance' if result == 0 else ('Left' if result > 0 else 'Right')
另外顺带提一句,你原代码里计算左右重量的循环部分也能简化,用生成器表达式配合sum()函数,代码会更简洁高效:
from collections import Counter def balance(left, right): wages = {'!': 2, '?': 3} left_weight = sum(count * wages[char] for char, count in Counter(left).items()) right_weight = sum(count * wages[char] for char, count in Counter(right).items()) result = left_weight - right_weight return 'Balance' if result == 0 else 'Left' if result > 0 else 'Right'
内容的提问来源于stack exchange,提问作者Ashtart
相关产品推荐
相关产品推荐

