Python程序设计入门(3)数组的使用


Posted in Python onJune 16, 2014

1、Python的数组可分为三种类型:

(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
定义方式:arr = [元素]

(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
定义方式:arr = (元素)

(2) Dictionary 词典类型, 即是Hash数组。
定义方式:arr = {元素k:v}

2、下面具体说明这些数组的使用方法和技巧:

(1) list 链表数组

a、定义时初始化

a = [1,2,[1,2,3]]

b、定义时不初始化

一维数组:

arr = []

多维数组:

arr = [i for i in range(10), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i,

如:

arr = [i for i in range(5), j for j in range(5), []]

这是错误的
i = 0
j = 0
arr = [i for i in range(5), j for j in range(5), []]

这是正确的

c、del 语句 和 : 的用法

可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)
del 删除数组里的指定元素
如:

del arr[0]
        del arr[0, 2]
       newarr = arr[0, 2]

d、遍历数组

for k, v in enumerate(arr):
        print k, v

e、增加元素

一维

arr.append('aaa')

二维
arr[0].append('aaa')

如果要在任意位置插入用 arr.insert(n, 值)
此外还有一种特殊的用法是:
arr += [数组元素]
在不指定下标的情况下,是允许用 += 增加数组元素的

(2) Tuple 固定数组

Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。
下面拿具体示例说明:

>>> t = ("a", "b", "c", "d", "e")              #[1] 用小括号包围来定义
>>> t
('a', 'b', 'c', 'd', 'e')
>>> t[0]                                       #[2] 直接列出某下标的元素
'a'
>>> t[-1]                                      #[3] 负数表示,从后面倒数的索引 -1 为倒数第一个, 0是顺数第一个
'example'
>>> t[1:3]                                     #[4] 这里 1:3 是 i>=1 and i<3 的区间
('b', 'mpilgrim')

Tuple没有的方法

[1] 不能向 tuple 增加元素,没有 append 、 extend 、insert  等方法。
[2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。
[3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用tuple的好处

* Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。
* 如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
* 还记得我说过 dictionary keys 可以是字符串, 整数和 “其它几种类型”吗? Tuples 就是这些类型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。

Tuple可以转换成list,反之亦然

转换方式为:
t = list( t )
反之:
arr = tuple( arr )

(2) Dictionary (哈希数组)词典数组

#Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:
#下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。
dict_arr = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']}
#可以直接增加一个元素,如果同名,则会改变原来的key的元素的值
dict_arr['d'] = 'dog'
#输出所有的key
print dict_arr.keys()
#输出所有的value
print dict_arr.values()
#遍历数组
import types
for k in dict_arr:
    v = dict_arr.get(k)
    if type(v) is types.ListType: #如果数据是list类型,继续遍历
        print k, '---'
        for kk, vv in enumerate(v):
            print kk, vv
        print '---'
    else:
        print dict_arr.get(k)
Python 相关文章推荐
python实现2048小游戏
Mar 30 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Python机器学习之SVM支持向量机
Dec 27 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
Python中按键来获取指定的值
Mar 02 Python
python实现列表的排序方法分享
Jul 01 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python新手学习使用库
Jun 11 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
Python程序设计入门(2)变量类型简介
Jun 16 #Python
Python程序设计入门(1)基本语法简介
Jun 13 #Python
Python对两个有序列表进行合并和排序的例子
Jun 13 #Python
用Python输出一个杨辉三角的例子
Jun 13 #Python
Python 的 with 语句详解
Jun 13 #Python
python学习笔记:字典的使用示例详解
Jun 13 #Python
Python urlopen()函数 示例分享
Jun 12 #Python
You might like
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
详解Python中dict与set的使用
2015/08/10 Python
实时获取Python的print输出流方法
2019/01/07 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
普天C++笔试题
2016/03/20 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
学校感恩教育活动总结
2014/07/07 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
中考学习决心书
2015/02/04 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
监理中标通知书
2015/04/16 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android