You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行表达式实现字符串所有字符的竖线包裹?

字符串字符竖线包裹的简洁实现方案

需求回顾

将字符串中的每个字符用竖线(|)包裹,示例如下:

'abc'   => '|a|b|c|'
'abcde' => '|a|b|c|d|e|'
'x'     => '|x|'
''      => '|'

现有循环实现示例:

s = 'abcde'

t = '|'
for c in s:
    t += c + '|'

print(t)    # |a|b|c|d|e|

一行表达式实现方案

推荐以下几种简洁高效的写法,均能覆盖包括空字符串在内的所有场景:

方案1:join + 列表拼接(最优解)

这是最简洁且无需额外判断的实现方式,同时也是Python中字符串拼接的高效方案:

result = '|'.join([''] + list(s) + [''])

原理:

  • 将空字符串、原字符串拆分成的字符列表、空字符串拼接成新列表(如s='abc'会得到['', 'a', 'b', 'c', ''])
  • 用|连接这个列表,直接生成目标格式;空字符串场景下,列表为['', ''],连接后正好是|

方案2:f-string + 三元表达式

写法更直观,但需要处理空字符串的边界:

result = f"|{'|'.join(s)}|" if s else '|'

原理:

  • 用'|'.join(s)将字符用|连接,再通过f-string前后包裹|
  • 三元表达式判断空字符串,返回|而非||

与循环实现的对比

你提供的循环实现逻辑正确,但存在性能劣势:Python中字符串是不可变类型,每次+=操作都会生成新的字符串对象,处理长字符串时效率较低。而join方法内部做了优化,是Python官方推荐的字符串拼接方式,既简洁又高效。

内容的提问来源于stack exchange,提问作者no comment

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:50:25