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

Python中如何传递列表子集的引用以实现原地修改?

Python 子数组修改同步到原列表解决方案

根本原因

Python 原生列表的切片操作默认生成独立的浅拷贝对象,你传入函数的array[0:2]已经是和原列表无关联的新列表,因此对它的修改不会同步到原列表。

可用实现方案

方案1:传入原列表+切片索引范围(无额外依赖)

修改函数定义,额外接收要操作的切片的起止索引,在函数内直接映射到原列表的对应位置修改:

def sample(array, start, end):
    # 定位切片最后一位对应的原列表索引
    target_index = end - 1
    array[target_index] = "e"

array = ["a","b","c"]
sample(array, 0, 2)
print(array)
# 输出符合预期:['a', 'e', 'c']

如果需要对切片做更复杂的操作,所有子数组的位置都可以通过start + 子数组内偏移量的方式映射到原列表的索引,直接操作原列表即可实现修改同步。

方案2:使用NumPy数组(切片为共享内存视图)

NumPy数组的切片默认是共享底层内存的视图,不会生成新拷贝,修改切片会直接同步到原数组:

import numpy as np

def sample(array):
    array[-1] = "e"

array = np.array(["a","b","c"], dtype=str)
sample(array[0:2])
print(array.tolist())
# 输出符合预期:['a', 'e', 'c']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:18:01