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

如何不借助外部方法复制四维数组?附Python二维数组示例

不借助外部方法复制四维数组的实现方式

当然可以不借助任何外部方法(比如Python标准库的copy模块)来复制四维数组。你的二维数组复制逻辑是通过两层嵌套循环逐层复制子列表和元素,对于四维数组,我们有两种可靠实现方式:

方法1:递归通用实现(推荐)

递归的优势在于能适配任意维度的嵌套列表(不仅是四维),逻辑更简洁且扩展性强。核心思路是:遍历每个元素,如果元素是列表就递归复制它,否则直接复制元素值。

def copie_profonde_liste(liste):
    """
    输入:嵌套列表(支持任意维度)
    输出:深拷贝后的嵌套列表
    """
    copie = []
    for element in liste:
        # 如果当前元素是列表,递归复制;否则直接添加元素
        if isinstance(element, list):
            copie.append(copie_profonde_liste(element))
        else:
            copie.append(element)
    return copie

代码说明

  • 递归终止条件:当遍历到非列表类型的元素时,直接复制值并添加到副本中。
  • 递归调用:遇到子列表时,递归调用自身完成该子列表的深拷贝,再将结果添加到外层副本里。
  • 兼容性:不管是二维、三维还是四维数组,这个函数都能正确处理。

方法2:四层嵌套循环(仅针对四维)

如果你只想针对四维数组写固定逻辑,可以延续你二维代码的思路,嵌套四层循环逐层复制:

def copie_quatre_dimensions(liste):
    """
    输入:四维列表
    输出:深拷贝后的四维列表
    """
    copie = []
    # 第一层:遍历四维数组的每个三维子数组
    for trois_dim in liste:
        copie_trois = []
        # 第二层:遍历三维数组的每个二维子数组
        for deux_dim in trois_dim:
            copie_deux = []
            # 第三层:遍历二维数组的每个一维子数组
            for un_dim in deux_dim:
                copie_un = []
                # 第四层:遍历一维数组的每个元素
                for valeur in un_dim:
                    copie_un.append(valeur)
                copie_deux.append(copie_un)
            copie_trois.append(copie_deux)
        copie.append(copie_trois)
    return copie

验证示例

我们可以用一个四维数组测试递归实现的效果:

# 创建一个四维数组
original = [[[[1,2], [3,4]], [[5,6], [7,8]]], [[[9,10], [11,12]], [[13,14], [15,16]]]]
# 复制数组
copie = copie_profonde_liste(original)
# 修改原数组的某个元素
original[0][0][0][0] = 99
# 查看副本,验证未被修改
print(copie[0][0][0][0])  # 输出1,说明副本不受原数组修改影响

两种方式都能实现不依赖外部方法的四维数组深拷贝,但递归实现更推荐——它不需要根据维度数修改代码,能灵活应对不同嵌套层级的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:50:05