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

能否仅用单个一维列表实现元素逆序?禁用内置函数

How to reverse a list in-place without using built-in functions or a new list?

Problem Details

我编写了如下Python代码:

list = ["Python", "is", "good", "program"]
newlist = []
for i in range(1, len(list)+1):
    newlist.append(list[-i])
print(newlist)

其输出为['program', 'good', 'is', 'python'],代码目的是实现列表元素的逆序排列。但我使用了新列表newlist,能否仅使用原列表list完成该功能?
补充说明:因学校要求,禁止使用内置函数或现成代码,请基于我的现有代码提供解决方案。


Solution

当然可以!既然不能用新列表,也不能用内置的reverse()或者切片[::-1]这类现成方法,咱们可以通过交换原列表两端的元素来实现原地逆序,完全基于你现有的循环思路来调整。

核心思路是:只需要循环到列表的中间位置,把第i个元素和倒数第i+1个元素交换位置——这样所有操作都在原列表上完成,不需要额外创建新列表。

Modified Code

# 建议不要用list作为变量名,这里改成my_list避免覆盖内置类型
my_list = ["Python", "is", "good", "program"]
# 循环到列表长度的一半,每个元素仅交换一次
for i in range(len(my_list) // 2):
    # 用临时变量保存元素,避免直接赋值覆盖
    temp = my_list[i]
    my_list[i] = my_list[-i - 1]
    my_list[-i - 1] = temp
print(my_list)

Code Explanation

  • 变量名从list改为my_list:list是Python的内置类型,用它当变量名会覆盖内置功能,这是编程里的小细节哦~
  • len(my_list) // 2:取列表长度的整数一半,比如长度为4时循环2次(i=0和i=1),刚好交换前两个和后两个元素;如果是奇数长度的列表,中间的元素不需要移动,循环到中间前一个位置就足够了。
  • 临时变量temp:用来暂存要交换的元素,防止直接赋值时丢失原有的元素值。

运行这段代码后,原列表my_list就会被逆序,输出结果和你原来的代码一致:['program', 'good', 'is', 'Python'],完全满足你的需求~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:24:52