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之正规地说一句话
Sep 28 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 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中ob_flush和flush的区别
2014/11/27 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP二维数组去重算法
2016/12/17 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
详解使用python crontab设置linux定时任务
2016/12/08 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
个人素质的自我评价分享
2013/12/16 职场文书
爱心活动计划书
2014/04/26 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
优秀班组长事迹
2014/05/31 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
投资意向协议书
2015/01/29 职场文书
销售经理岗位职责
2015/01/31 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
Python超简单容易上手的画图工具库推荐
2021/05/10 Python