Python 中如何反转一个字符串?

Python 反转字符串最简洁的方法是切片 s[::-1]。也可用 reversed() 配合 join。本文介绍两种方法及 Unicode 注意事项。

最佳实践
Python 中如何反转一个字符串?封面

最简洁的写法:切片 s[::-1]——步长为 -1 表示从后往前取。"hello"[::-1] 得到 "olleh"。

方法一:切片(推荐)

original = "hello"
reversed_str = original[::-1]
print(reversed_str)  # "olleh"

切片 [start:stop:step] 中 step 为 -1 即倒序遍历。列表、元组等序列类型同样适用。

方法二:reversed() + join()

reversed_str = "".join(reversed("hello"))
print(reversed_str)  # "olleh"

reversed() 返回反向迭代器,join 把字符拼回字符串。代码更"显式",但不如切片简洁。

性能对比

性能取决于实现和输入,需实测;不能把负步长切片理解成普通的一次连续内存拷贝。不推荐用 for 循环逐个字符拼接——Python 字符串不可变,反复拼接可能产生二次复制成本,不应依赖特定实现优化。

Unicode 注意事项

对包含组合字符(如带声调符号的字母、某些 emoji)的文本,简单反转可能把组合字符拆开。字符串切片按 Unicode 码点反转,而非可见字素;中英文也可能包含组合符号。可用支持字素簇的库,但需核对其 Unicode 版本与目标文本。

常见问题(FAQ)

Q:反转列表用什么?
A:同样可以用 lst[::-1](返回新列表);想原地反转用 lst.reverse();reversed(lst) 返回迭代器。

Q:反转后还能反转回来吗?
A:可以,s[::-1][::-1] == s 恒成立。

Q:如何只反转单词顺序而不是字符?
A:' '.join(s.split()[::-1]),split() 按空白分隔并合并连续空白,join 后不会保留原空格、换行或缩进。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台