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

LeetCode反转字符串题中s[:]=s[::-1]与s=s[::-1]的区别是什么?

核心原因是两种写法对列表的操作逻辑完全不同,和题目的要求直接相关

这道LeetCode题明确要求不返回新对象,仅原地修改输入的列表s,两种写法的差异如下:

  • s = s[::-1]的逻辑:s[::-1]会先生成一个全新的、反转后的列表对象,赋值操作只是让函数内的局部变量s指向这个新对象,完全不会修改外部传入的原列表。函数执行结束后,外部传入的列表还是原来的内容,不符合题目要求。
  • s[:] = s[::-1]的逻辑:这是Python的切片赋值语法,会直接修改原列表对象的所有元素,不会改变s的指向,始终操作的是外部传入的那个原始列表,实现了原地修改,符合题目要求。

你可以用下面的测试代码验证差异:

def bad_reverse(s):
    s = s[::-1]

def good_reverse(s):
    s[:] = s[::-1]

test_list = ["a","b","c"]
bad_reverse(test_list)
print(test_list) # 输出:['a', 'b', 'c'],原列表未修改

good_reverse(test_list)
print(test_list) # 输出:['c', 'b', 'a'],原列表已修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:08