否则在Python3的列表理解中

2024-04-25 22:39:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个混合大小写的字符串,例如“aBcDeF”。 我想把所有小写字母都大写,对于大写字母,只有小写字母是字母'B'。意思是,我想要结果“AbCDEF”。 我试过在列表理解中这样做:

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

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

^{pr2}$

我回顾过类似的问题,但没有一个能给我答案。在


Tags: 字符串列表if字母大写字母upperlowerelse
3条回答

坚持你对清单理解的精神。在

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

印刷品:

^{pr2}$
[char.upper() if char != 'B' else char.lower() for char in "aBcDeF"]

@MooingRawr为您的具体案例提供了最好的答案,但是如果您真的想在列表理解中包含多个if语句,那么您应该做如下事情:

[x.upper() if x.islower() else x.lower() if x=='B' else x.upper() for x in "aBcDeF"]

在第二个(嵌入的)if语句周围加上括号可能更容易理解:

^{pr2}$

不过,这在您的案例中并不理想,因为您已经x.upper()写了两次。在

这基本上相当于:

new_str = ''

for x in "aBcDeF":
    if x.islower():
        new_str += x.upper()
    elif x == 'B';
        new_str += x.lower()
    else:
        new_str += x.upper()

相关问题 更多 >