文章目录

  • 1、简介
  • 2、功能实现
  • 2.1、 一个表面上看起来是的 数组
  • 2.2 直接赋值的列表可以实现
  • 2.3 在列表中 使用 for 循环赋值
  • 2.3 使用numpy 包


1、简介

python 实现 二维 、三维数组 ,并且能够改变里面的数值

2、功能实现

2.1、 一个表面上看起来是的 数组
list = [0]*2
print(list)
list1 = [[0]*2]*2
print(list1)

打印:
[0, 0]
[[0, 0], [0, 0]]

我们修改一个值

list = [0]*2
print(list)
list1 = [[0]*2]*2
print(list1)

list1[1][1]  = 2
print(list1)


打印:
[0, 0]
[[0, 0], [0, 0]]
[[0, 2], [0, 2]]

这种并不能修改指定的数值

我们发现我们修改的 是[1,1] 这个位置 但是,改变的却是[0,1] ,[1,1] 的位置,
出现这个结果的原因是:
list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接
修改其中的任何一个元素会改变整个列表,

2.2 直接赋值的列表可以实现
list2 = [[0,0],[0,0]]
print(list2)
list2[1][1] = 2
print(list2)

打印:
[[0, 0], [0, 0]]
[[0, 0], [0, 2]]
2.3 在列表中 使用 for 循环赋值
list = [0 for i in range(2)]
print(list)
list = [[0 for i in range(2)] for i in range(2)]
print(list)
list[1][1] = 2
print(list)


打印:
[0, 0]
[[0, 0], [0, 0]]
[[0, 0], [0, 2]]

三维数组实例:

list3=[[[0 for i in range(2)] for i in range(2) ] for i in range(3)]
print(list3)
list3[2][1][1] =2
print(list3)

打印:
[[[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0], [0, 0]]]
[[[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0], [0, 2]]]

注意事项:

采用 从后往前表示
a[3][2]
方式 是从内到外的,是从列到行
list = [[0 for i in range(2)] for i in range(3)]
上面就是列表
3行 2列
[[0, 0], [0, 0], [0, 0]]

2.3 使用numpy 包

import numpy

list = numpy.zeros([4],dtype=float)
print(list)
list = numpy.zeros([2,2],dtype=int)
print(list)
list = numpy.zeros([2,2,3],dtype=int)
print(list)

打印:
[0. 0. 0. 0.]

[[0 0]
 [0 0]]

[[[0 0 0]
  [0 0 0]]
 [[0 0 0]
  [0 0 0]]]