zoukankan      html  css  js  c++  java
  • Python学习第二天数组

    1:Python定义数组:a=[0,1,2,3,4] ;   打印数组list(a); 这时:a[0]=0, a[1]=1, a[[2]=2......
    1.1:如果想定义一个很长的数组可以用到python函数range a=range(1000)生成1000个元素的一维数组, list(a) 打印数组显示
    1.2:给生成的数组赋初始值:a = [0 for x in range(0, 1000)]
           0表示初始值  x表示数组中的元素 range(995,1000)表示从995开始生成到1000,生成5个元素,995和1000并不是表示数组下标
    1.3: 如果是range(0,1000)表示生成1000个元素,从0开始。

    2.1:二维数组定义:a=[[1,1],[1,1]]  这个可以理解成2*2的格式,即这个二维数组有2个元素,每个元素中包含2个子元素
    2.2 生成二维数组: a=[[0 for x in range(10)] for y in range(10)],      
          另外一种写法:b=[[0]*10]*10定义10*10初始为0的二维数组 这个可以理解成10*10的格式,即这个二维数组有10个元素,每个元素中包含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)]有同样的效果,Python数组 而没有上面相同引用的问题,估计数组c的定义时是值类型相乘,而前面b的用类型的相乘,因为一维数组是一个引用。

  • 相关阅读:
    stm32之不定长接收
    3、列表和列表项
    2、FreeRTOS任务相关API函数
    1、FreeRTOS移植
    5、根文件系统原理
    1、c++对c语言的扩展
    4、移植三星官方内核
    3、内核的启动过程
    2、内核的配置和移植
    iOS学习笔记19-地图(一)定位CoreLocation
  • 原文地址:https://www.cnblogs.com/iifeng/p/3892283.html
Copyright © 2011-2022 走看看