在两个值之间切换变量的大多数Python方法

时间:2019-06-26 21:40:32

标签: python string conditional-statements

我有一个变量p,它是正则表达式匹配项的输出,并且在任何混合情况下都保证为“ true”或“ false”。如果为“ true”,我希望它为“ FALSE”;如果为“ false”,我希望它为“ TRUE”。最终结果总是大写。

我想到了以下四种方法。哪个是最蟒蛇的还是有更好的蟒蛇?

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()]

3 个答案:

答案 0 :(得分:6)

IMO,最Python的方式不是使用eval,dunders或使用2元素列表索引,这是一种简单的if-else条件(或三进制)条件:

p = 'TRUE' if p.upper() == 'FALSE' else 'FALSE'

它不使用黑客手段或欺骗手段,它很简单,(更重要的是)可读性。

答案 1 :(得分:1)

@ cs95的解决方案是可行的方法,但这是(IMO)可接受的(尽管可读性较差,并且可能更复杂):

p = str(p.upper() == "FALSE").upper()

答案 2 :(得分:0)

编辑:怎么样

p=str(p.lower()!="true").upper()

没有循环,没有,没有复杂的功能。只需更改类型功能。简短;;