python

导航

如何利用python定义数组?

来源 :中华考试网 2020-09-29

  

  所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。那么python如何定义数组呢?一起来了解下吧:

  python如何定义数组

  一、一维数组

  1.直接定义

  matrix=[0,1,2,3]

  2.间接定义

  matrix=[0 for i in range(4)]

  print(matrix)

  输出:

  [0, 0, 0, 0]

  3.数组乘法

  matrix=[0]*5

  print(matrix)

  输出:

  [0, 0, 0, 0, 0]

  二、二维数组

  1.直接定义(3*2)

  matrix=[[0,0],[0,0],[0,0]]

  2.间接定义(3*2)

  matrix=[[0 for i in range(2)] for i in range(3)]

  print(matrix)

  输出:

  [[0, 0], [0, 0], [0, 0]]

  3.数组乘法

  matrix=[[0,0]]*5

  print(matrix)

  输出:

  [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]

  Python数组定义的方法

  Python中没有数组的数据结构,但列表很像数组,如:

  a=[0,1,2]

  这时:a[0]=0, a[1]=1, a[[2]=2,但引出一个问题,即如果数组a想定义为0到999怎么办?这时可能通过a = range(0, 1000)实现。或省略为a = range(1000).如果想定义1000长度的a,初始值全为0,则 a = [0 for x in range(0, 1000)]

  下面是二维数组的定义:

  直接定义:

  a=[[1,1],[1,1]]

  这里定义了一个2*2的,且初始为0的二维数组。

  间接定义:

  a=[[0 for x in range(10)] for y in range(10)]

  这里定义了10*10初始为0的二维数组。

  还有更简单的字义二维数组的方法:

  b = [[0]*10]*10

  定义10*10初始为0的二维数组。

  与a=[[0 for x in range(10)] for y in range(10)]比较:print a==b的结果为True。

  但用b的定义方法代替a后,以前的可以正常运行的程序也出错了,经过仔细分析得出区别:

  a[0][0]=1时,只有a[0][0]为1,其他全为0。

  b[0][0]=1时,a[0][0],a[1][0],只到a[9,0]全部为1。

  由此得到大数组中的10个小的一维数据全是一个相同的引用,即指向同一地址。

  故 b = [[0]*10]*10并不符合我们常规意义上的二维数组。

  同时经过试验:c=[0]*10的定义与c=[0 for x in range(10)]有同样的效果,而没有上面相同引用的问题,估计数组c的定义时是值类型相乘,而前面b的用类型的相乘,因为一维数组是一个引用(借用C#中的值类型和引用类型,不知是否合适)。

分享到

相关资讯