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实现服务器中只重载被修改的进程的方法
Apr 30 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
python实现二叉树的遍历
Dec 11 Python
numpy中loadtxt 的用法详解
Aug 03 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
Django中自定义查询对象的具体使用
Oct 13 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
基于Python实现全自动下载抖音视频
Nov 06 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
node.js中axios使用心得总结
2017/11/29 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Python字符串的常见操作实例小结
2019/04/08 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
2015年商场工作总结
2015/04/27 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
Python基础之数据结构详解
2021/04/28 Python
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python