如何基于字符ASCII值对字符串排序 能否仅通过字符串操作函数实现
实现方案
完全可以实现,而且代码比你当前的循环写法更简洁:
text = "Hello, World!" sorted_text = ''.join(sorted(text)) print(sorted_text)
运行后输出结果为!,HWdellloor,和你要求的效果完全一致。
原理解释
- 字符串本身是可迭代对象,内置函数
sorted()会直接遍历字符串的每个字符,默认按照字符的Unicode码点排序,ASCII字符的码点和ASCII值完全一致,所以排序逻辑和你手动转ord()排序的逻辑没有任何区别。 - 字符串的
join()方法可以直接把sorted()返回的排序后字符列表拼接为完整字符串,不需要你手动做ord()、chr()的转换操作。
如果你需要保留原代码里字符之间加空格的输出效果,只要把''.join改成' '.join即可:
text = "Hello, World!" sorted_text_with_space = ' '.join(sorted(text)) print(sorted_text_with_space)
内容的提问来源于stack exchange,提问作者Luca Marinescu
相关产品推荐
相关产品推荐

