否则如果在Python3中的列表理解中

blz*_*blz 5 python list python-3.x

我有一个混合大小写的字符串,例如"aBcDeF".我希望将所有小写字母大写,而对于大写字母,如果它们是字母'B',则只小写它们.意思是,我想要结果"AbCDEF".我已尝试在列表理解中这样做:

x = [str.upper(char) if char.islower() 
else str.lower(char) if char == "B" for char in "aBcDeF"]
Run Code Online (Sandbox Code Playgroud)
  • 换行符只是为了方便阅读,在我的代码中它们是连接起来的

但是,我得到以下语法错误:

Traceback (most recent call last):
  File "python", line 11
    else str.lower(char) if char == "B" for char in "aBcDeF"]
                                          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我已经回顾了类似的问题,但没有人给我答案.

Moo*_*awr 7

坚持你的if-else列表理解精神.

print([str.lower(char) if char.isupper() and char =='B' else str.upper(char) for char in "aBcDeF"])
Run Code Online (Sandbox Code Playgroud)

打印:

['A', 'b', 'C', 'D', 'E', 'F']
Run Code Online (Sandbox Code Playgroud)


Pat*_*ugh 5

[char.upper() if char != 'B' else char.lower() for char in "aBcDeF"]
Run Code Online (Sandbox Code Playgroud)