Python字符串左移两位问题:现有解法是否有更优雅实现?
左移两位字符串的优化实现
问题说明
给定长度≥2的字符串,返回将前两个字符移至末尾的“左移2位”版本,示例如下:
- left2('Hello') → 'lloHe'
- left2('java') → 'vaja'
- left2('Hi') → 'Hi'
我当前的解法
def left2(str): first = list(str) first.insert(len(first),first.pop(0)) first.insert(len(first),first.pop(0)) x = ''.join(first) return x
更简洁高效的实现
Python的字符串切片可以直接完成这个需求,不需要转列表做复杂操作,一行代码就能解决:
def left2(s): return s[2:] + s[:2]
为什么这更优雅?
- 简洁性:直接利用切片语法拆分重组字符串,逻辑一目了然
- 效率更高:字符串切片是Python底层优化的操作,比转列表后执行pop/insert的效率高很多
- 可读性强:看代码就能立刻明白是取后面部分拼接前两个字符,不需要理解列表操作的细节
内容的提问来源于stack exchange,提问作者Joseph Groth
相关产品推荐
相关产品推荐

