Concat string if 条件,否则什么都不做

Concat string if condition, else do nothing

我想将几个字符串连接在一起,并且仅当布尔条件为 True 时才添加最后一个字符串。 像这样(a、b 和 c 是字符串):

something = a + b + (c if <condition>)

但是Python不喜欢。有没有没有 else 选项的好方法?

谢谢! :)

这应该适用于简单的场景 -

something = ''.join([a, b, c if condition else ''])

在不使用 else 的情况下尝试下面的操作。它通过在条件 False (0) 时索引空字符串和在条件 True (1)

时索引字符串 c 来工作
something = a + b + ['', c][condition]

我不确定你为什么要避免使用 else,否则,下面的代码似乎更具可读性:

something = a + b + (c if condition else '')

Is there a nice way to do it without the else option?

嗯,是的:

something = ''.join([a, b])
if condition:
    something = ''.join([something, c])

但我不知道你的意思是字面上没有else,还是没有整个if语句。

这是可能的,但不是很 Pythonic:

something = a + b + c * condition

这会起作用,因为 condition * False 将 return '',而 condition * True 将 return 原始 condition。但是,您在这里必须小心,condition 也可以是 01,但是任何更大的数字或任何文字都会破坏代码。

a_list = ['apple', 'banana,orange', 'strawberry']
b_list = []

for i in a_list:
    for j in i.split(','):
        b_list.append(j)

print(b_list)