Python 中如何反转一个字符串?
Python 反转字符串最简洁的方法是切片 s[::-1]。也可用 reversed() 配合 join。本文介绍两种方法及 Unicode 注意事项。
最简洁的写法:切片 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 字符串不可变,循环拼接是 O(n²)。
Unicode 注意事项
对包含组合字符(如带声调符号的字母、某些 emoji)的文本,简单反转可能把组合字符拆开。日常中英文、普通中文文本没这个问题;需要处理复杂文本时可以用第三方库 grapheme 按字素簇反转。
常见问题(FAQ)
Q:反转列表用什么?
A:同样可以用 lst[::-1](返回新列表);想原地反转用 lst.reverse();reversed(lst) 返回迭代器。
Q:反转后还能反转回来吗?
A:可以,s[::-1][::-1] == s 恒成立。
Q:如何只反转单词顺序而不是字符?
A:' '.join(s.split()[::-1]),先按空格分词,反转单词列表再拼接。