将“更好”理解为更快、更优雅、更易读。
我有两个字符串(a
和 b
)可以为空或不为空。只有当两者都不为空时,我才想用连字符分隔它们:
a - b
a
(如果 b 为空)
b
(其中 a 为空)
最佳答案
# Concatenates a and b with ' - ' or Coalesces them if one is None
'-'.join([x for x in (a,b) if x])
编辑
下面是这个算法的结果(注意 None 和 '' 一样):
>>> '-'.join([x for x in ('foo','bar') if x])
'foo-bar'
>>> '-'.join([x for x in ('foo','') if x])
'foo'
>>> '-'.join([x for x in ('','bar') if x])
'bar'
>>> '-'.join([x for x in ('','') if x])
''
*还请注意,Rafael 在下面的帖子中的评估显示,在过滤方法的 1000 次迭代中仅显示了 0.0002 秒的差异,可以推断出如此小的差异可能是由于可用系统资源的不一致造成的在运行脚本时。我在几次迭代中运行了他的 timeit 实现,发现这两种算法在大约 50% 的时间里都会更快,而且幅度都不大。从而表明它们基本上是等价的。
关于python - 在python中连接字符串有什么更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360961/