我有一个变量 p,它是正则表达式匹配的输出,在任何混合情况下都保证为“真”或“假”。如果是“真”,我希望它是“假”,如果是“假”,我希望它是“真”。最终结果始终为大写。
我想到了以下四种方法。哪个是最 pythonic 的还是有更好的?
p=['TRUE','FALSE'][eval(p.capitalize())]
p=(not eval(p.capitalize())).__repr__().upper()
p='FALSE' if eval(p.capitalize()) else 'TRUE'
p={'TRUE':'FALSE','FALSE':'TRUE'}[p.upper()]
请您参考如下方法:
IMO,最 pythonic 的方法不是使用 eval,也不是 dunders,也不是使用 2 元素列表索引,它是一个简单的 if-else 条件(或三元):
p = 'TRUE' if p.upper() == 'FALSE' else 'FALSE'
它不使用黑客或诡计,它简单且(更重要的是)可读。
