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模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
基于Django用户认证系统详解
Feb 21 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
Python3字符串encode与decode的讲解
Apr 02 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
python os模块在系统管理中的应用
Jun 22 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
Python colormap库的安装和使用详情
Oct 06 Python
详解python字符串驻留技术
May 21 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程序员应该了解MongoDB的五件事
2013/06/03 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
php学习笔记之基础知识
2014/11/08 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
Python类的用法实例浅析
2015/05/27 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python闭包思想与用法浅析
2018/12/27 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
九年级家长会邀请函
2014/01/15 职场文书
外出考察学习心得体会
2016/01/18 职场文书
创业计划书之宠物店
2019/09/19 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android