Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5096783
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2011-02-17 00:06:58

    Python数组在实际的应用的过程中,也许你会遇到很多的问题就针对这一些常见问题,下面的文章会给出相关的解答方案。

    本文主要介绍的是Python数组在实际应用过程中的操作方案,如果你在Python数组的实际应用的过程中有疑惑的情况下,你就可以浏览以下的文章,希望对你会有所帮助,以下就是文章的具体介绍。

    本文并不详细介绍Python列表,可以参看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)]  

    这里Python数组定义了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)]有同样的效果,Python数组 而没有上面相同引用的问题,估计数组c的定义时是值类型相乘,而前面b的用类型的相乘,因为一维数组是一个引用。

阅读(1768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~