主页 > 手机  > 

数组的初始化以及拷贝

数组的初始化以及拷贝
1. 数组拷贝 浅拷贝(Shallow Copy): 浅拷贝创建一个新的对象,但不会复制原始对象中的子对象。原始对象和浅拷贝后的对象共享相同的子对象。这意味着,如果修改了浅拷贝后的对象中的子对象,原始对象中的相应子对象也会受到影响。浅拷贝通常使用一些语言提供的内建函数(如copy.copy()在Python中)来执行。 深拷贝(Deep Copy): 深拷贝创建一个新的对象,并且递归地复制原始对象中的子对象。这意味着原始对象和深拷贝后的对象是完全独立的,对其中一个的修改不会影响另一个。深拷贝通常需要使用专门设计用于深拷贝的函数或库(如copy.deepcopy()在Python中)。

使用场景: 备份, 或者是回溯题目的时候需要深拷贝数组, 如果是浅拷贝的化那么将会为[]数组

# 推荐深拷贝 [row[:] for row in arr] def twoDimensinalArrCopy(arr): new_arr_shallow1 = arr # 浅拷贝 直接赋值 new_arr_shallow2 = arr[:][:] # 浅拷贝 [:][:] new_arr_shallow3 = arr.copy() # 浅拷贝 .copy() new_arr_deep1 = [row[:] for row in arr] # 深拷贝 arr[0][0] = 100 print(new_arr_shallow1) print(new_arr_shallow2) print(new_arr_shallow3) print(new_arr_deep1) # 推荐深拷贝 arr[:] def oneDimensionalArrCopy(arr): new_arr_shallow = arr # 一维数组浅拷贝 new_arr_deep = arr[:] # 一维数组深拷贝 new_arr_deep2 = arr.copy() # 一维数组深拷贝 arr[0] = 8 print(f"浅拷贝: {new_arr_shallow}") print(f"深拷贝: {new_arr_deep}") print(f"深拷贝: {new_arr_deep2}") if __name__ == '__main__': arr_one = [1, 2, 3, 4, 5, 6, 7] arr_two = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # oneDimensionalArrCopy(arr_one) # 一维数组拷贝 # twoDimensinalArrCopy(arr_two) # 二维数组拷贝 2. 数组的初始化 2.1 初始一维数组直接 def createOneArr(length): arr = [0] * length return arr 2.2 初始化二维数组

这里需要注意要使用一个for循环,不然会有问题 可以自行测试

def createTwoArr(row, column): arr = [[0] * column for _ in range(row)] # 注意行列的顺序 # arr = [[0] * column] * row # 这种是错误的 这种初始化相当于是每行都相同 return arr def createOneArr(length): arr = [0] * length return arr # 初始化一个row行, column列的二维数组 def createTwoArr(row, column): arr = [[0] * column for _ in range(row)] # 注意行列的顺序 # arr = [[0] * column] * row # 这种是错误的 这种初始化相当于是每行都相同 return arr if __name__ == '__main__': # 矩阵初始化 one = createOneArr(5) two = createTwoArr(4, 5) print(one) print(two) two[0][0] = 1 print(two) 3. 总的代码 # 推荐深拷贝 [row[:] for row in arr] def twoDimensinalArrCopy(arr): new_arr_shallow1 = arr # 浅拷贝 直接赋值 new_arr_shallow2 = arr[:][:] # 浅拷贝 [:][:] new_arr_shallow3 = arr.copy() # 浅拷贝 .copy() new_arr_deep1 = [row[:] for row in arr] # 深拷贝 arr[0][0] = 100 print(new_arr_shallow1) print(new_arr_shallow2) print(new_arr_shallow3) print(new_arr_deep1) # 推荐深拷贝 arr[:] def oneDimensionalArrCopy(arr): new_arr_shallow = arr # 一维数组浅拷贝 new_arr_deep = arr[:] # 一维数组深拷贝 new_arr_deep2 = arr.copy() # 一维数组深拷贝 arr[0] = 8 print(f"浅拷贝: {new_arr_shallow}") print(f"深拷贝: {new_arr_deep}") print(f"深拷贝: {new_arr_deep2}") # 初始化一个length的数组 def createOneArr(length): arr = [0] * length return arr # 初始化一个row行, column列的二维数组 def createTwoArr(row, column): arr = [[0] * column for _ in range(row)] # 注意行列的顺序 # arr = [[0] * column] * row # 这种是错误的 这种初始化相当于是每行都相同 return arr if __name__ == '__main__': arr_one = [1, 2, 3, 4, 5, 6, 7] arr_two = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # oneDimensionalArrCopy(arr_one) # 一维数组拷贝 # twoDimensinalArrCopy(arr_two) # 二维数组拷贝 # 矩阵初始化 one = createOneArr(5) two = createTwoArr(4, 5) print(one) print(two) two[0][0] = 1 print(two)
标签:

数组的初始化以及拷贝由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“数组的初始化以及拷贝

上一篇
LVS-DR模式

下一篇
Nginx缓存