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中的socket模块使用代理实例
May 29 Python
Python用GET方法上传文件
Mar 10 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python入门教程之if语句的用法
May 14 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
一个Python最简单的接口自动化框架
Jan 02 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Python Pexpect库的简单使用方法
Jan 29 Python
python多线程实现TCP服务端
Sep 03 Python
pytorch 使用加载训练好的模型做inference
Feb 20 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
js继承的实现代码
2010/08/05 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python sort、sort_index方法代码实例
2019/03/28 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python networkx包的实现
2020/02/14 Python
Keras loss函数剖析
2020/07/06 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
农业开发项目建议书
2014/05/16 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
党员自我评价范文2015
2015/03/03 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
使用python创建股票的时间序列可视化分析
2022/03/03 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技