python - 在python中连接字符串有什么更好的方法?

标签 python string string-concatenation

将“更好”理解为更快、更优雅、更易读。

我有两个字符串(ab)可以为空或不为空。只有当两者都不为空时,我才想用连字符分隔它们:

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/

相关文章:

python - 在 python 中使用 "bed"文件

python - imaplib 代理身份验证

python - 如何在查询字符串中创建关联数组

ruby - 查找字符串中的出现并保留出现的顺序

Ruby TCPSocket 读取直到自定义终止符

python - 如何排除表单子(monad)类中 ModelForm 中声明的字段?

python - 在Python中格式化字符串

java - 我的 Java 数学运算出现错误?

javascript - 简单的 AJAX 帮助请求 : significance of "+=" applied to string

elasticsearch - 通过文本字段聚合和排序,并在Elasticsearch中连接其他文本字段