如何不借助外部方法复制四维数组?附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
相关产品推荐
相关产品推荐

