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

Python列表拼接自身反向副本时原列表被意外修改问题求解

问题原因

Python中的列表属于可变对象,代码中reversel = list的写法没有生成新的列表副本,只是给原输入列表新增了一个变量引用,两个变量指向内存中完全相同的列表对象。因此调用reversel.reverse()执行原地反转操作时,原列表也会同步被修改,最终导致结果不符合预期。
另外注意不要用list作为参数名,它是Python内置的类型关键字,用作参数会覆盖原生功能,建议改为input_list这类自定义名称。

修复方案

这里提供两种常用的简洁实现方式:

方案1:复制原列表后反转

先创建原列表的浅拷贝,对拷贝后的对象执行反转操作,再拼接到原列表:

def mirror(input_list):
    # 生成原列表的浅拷贝
    reversel = input_list.copy()
    reversel.reverse()
    input_list.extend(reversel)
    return input_list

test = ["alpha", "beta"]
print(mirror(test))

方案2:使用反向切片直接生成反转副本

利用列表切片特性直接生成反转后的新列表,无需单独执行反转操作,代码更简洁:

def mirror(input_list):
    return input_list + input_list[::-1]

test = ["alpha", "beta"]
print(mirror(test))

两种方案的输出均符合预期:

['alpha', 'beta', 'beta', 'alpha']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:04