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

Python原地重排列表:偶数索引元素逆序前置,奇数索引后置

原地修改列表:偶数索引元素逆序前置 + 奇数索引元素后置的解法

嘿,作为Python新手碰到这种原地修改的要求确实容易踩坑——你原来的写法l = l[::-2] + l[1::2]其实是创建了一个全新的列表,然后把变量l重新指向这个新列表,原来的列表对象根本没被修改,难怪会被判定不符合要求!

正确的原地修改思路

Python里要实现原地修改列表,关键是用切片赋值(l[:] = ...),这种方式会直接修改原列表内部的元素,而不是重新绑定变量引用。

直接上可行的代码:

l = [0, 1, 2, 3, 4, 5, 6]
# 原地替换原列表的所有内容:偶数索引逆序 + 奇数索引元素
l[:] = l[::-2] + l[1::2]
print(l)  # 输出: [6, 4, 2, 0, 1, 3, 5]

为什么这个写法符合要求?

  • l[::-2]会取出所有偶数索引的元素并逆序(原列表索引0、2、4、6的元素是0,2,4,6,逆序后就是6,4,2,0)
  • l[1::2]取出所有奇数索引的元素(1,3,5)
  • 把这两部分拼接后,通过l[:] = ...赋值给原列表的整个切片,这一步是直接修改原列表的元素,完全属于原地操作,没有创建新的列表对象来替换原变量的引用。

再强调下原地修改的核心区别

  • 错误写法l = ...:改变的是变量l的指向,原列表对象没被修改(如果没有其他引用就会被回收)
  • 正确写法l[:] = ...:直接修改原列表对象的内容,变量l始终指向同一个列表对象,满足原地修改的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:02:12