一维数组初始化:
方式一:
nums = [1]*4
nums[0] = 4
print(nums) # [4, 1, 1, 1]
方式二:列表生成式
nums = [1 for _ in range(4)]
二维数据初始:
错误方式:
nums = [[1]*3]*4
nums[0][0] = 4
print(nums) # [[4, 1, 1], [4, 1, 1], [4, 1, 1], [4, 1, 1]]
正确方式:
nums = [[1]*3 for _ in range(4)]
nums[0][0] = 9
print(nums) # [[9, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
方式全循环的方式
nums = [[1 for _ in range(3)] for _ in range(4)]
三维数组初始化:
错误方式:
nums = [[[1]*2]*3 for _ in range(3)]
nums[0][0][0] = 9
print(nums) # [[[9, 1], [9, 1], [9, 1]], [[1, 1], [1, 1], [1, 1]], [[1, 1], [1, 1], [1, 1]]]
正确方式:
nums = [[[1]*2 for _ in range(3)] for _ in range(3)]
nums[0][0][0] = 9
print(nums) #[[[9, 1], [1, 1], [1, 1]], [[1, 1], [1, 1], [1, 1]], [[1, 1], [1, 1], [1, 1]]]
总结: nums = [1]*4这里是将元素1的索引进行复制,而nums = [[1]*3]*4这里外层是对内层元素即[1, 1, 1]的索引进行了复制,生成的4项的指向是同一地址,也就是对数组[1, 1, 1]的浅拷贝。按此规律进行多维数组的初始化