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妹子图简单爬虫实例
Jul 07 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Python将多个list合并为1个list的方法
Jun 27 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python矩阵的转置和逆转实例
Dec 12 Python
python制作图片缩略图
Apr 30 Python
python查看数据类型的方法
Oct 12 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
python实现贪吃蛇游戏源码
Mar 21 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
你应该知道的Python3.6、3.7、3.8新特性小结
May 12 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
解密效果
2006/06/23 Javascript
用脚本调用样式的几种方法
2006/12/09 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
js中数组常用方法总结(推荐)
2019/04/09 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
Python入门篇之列表和元组
2014/10/17 Python
Python中的两个内置模块介绍
2015/04/05 Python
python制作一个桌面便签软件
2015/08/09 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
详解rem 适配布局
2018/10/31 HTML / CSS
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
如何利用python和DOS获取wifi密码
2021/03/31 Python
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript