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发送邮件接收邮件示例分享
Jan 21 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
Python 处理文件的几种方式
Aug 23 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
python新式类和经典类的区别实例分析
Mar 23 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Python基础知识学习之类的继承
May 31 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 Python
Python字符串格式化方式
Apr 07 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网站地图生成类示例
2014/01/13 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
犀利的js 函数集合
2009/06/11 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
Express的路由详解
2015/12/10 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
详解Python装饰器
2019/03/25 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
生物科学专业个人求职信范文
2013/12/07 职场文书
食品采购员岗位职责
2014/04/14 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android