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
也可以是 0
或 1
,但是任何更大的数字或任何文字都会破坏代码。
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)
我想将几个字符串连接在一起,并且仅当布尔条件为 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
也可以是 0
或 1
,但是任何更大的数字或任何文字都会破坏代码。
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)