容器类一度活跃在各大编程语言当中,Python中同样存在容器,同时不像Java中这么复杂,仅保留两个,主要是其列表类,也就是可变长数组,相当于Java中的ArrayList,还有一个集合,里面的元素无序,不允许重复,相当于Java中的HashSet。同时还是有一个字典,就是JavaScript中鼎鼎大名的Json数组,也就是Java中的HashMap。Java中的容器类在《【Java】Java中的Collections类——Java中升级版的数据结构》(点击打开链接)中已经说过了,下面以两个小程序,说明Python中的容器类。
一、列表、集合
列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的。
下面这个程序说明了Python中列表的运用,最后还用到早在Java中用过的《【Java】为ArrayList去重》(点击打开链接)方法为这个arraylist去重。先把列表转化为集合,再把集合转化为列表。在Python中这里还没有Java这么复杂,因为任何变量的声明都不用写变量名。集合就是数学上的集合,无序、互异、确定。
#-*-coding:utf-8-*- #列表、集合 arraylist=[1,12,3,4,5,9,7,9,9];#定义一个数组、同时也是容器 print "现在的arraylist为:"+str(arraylist); print "arraylist中9的个数为:"+str(arraylist.count(9)); print "1在arraylist的:"+str(arraylist.index(1))+"位置"; arraylist.insert(0, 100); print "在arraylist的第0个位置插入100的arraylist为:"+str(arraylist); for i in range(0,len(arraylist)): print arraylist[i], print; arraylist.sort(); print "排序后的arraylist为:"+str(arraylist); arraylist.reverse(); print "倒置后的arraylist为:"+str(arraylist); arraylist=set(arraylist); arraylist=list(arraylist); print "去重后的arraylist为:"+str(arraylist);运行结果如下:
里面所用的列表方法总结如下:
insert(i,x):在指定位置插入一项。第一自变量是要在哪一个元素前面插入,用下标表示例如,list.insert(0, x)在列表前面插入,list.insert(len(list), x)等价于list.append(x)。
append(x):等价于list.insert(len(a), x)
index(x):在列表中查找值x然后返回第一个值为x的元素的下标。没有找到时出错。
remove(x):从列表中删去第一个值为x的元素,找不到时出错。
sort():对列表元素在原位排序。注意这个方法改变列表,而不是返回排序后的列表。
reverse():把列表元素反序。改变列表。
count(x):返回x在列表中出现的次数。
二、字典
先把程序摆上,大家见到后,如果你知道Json是什么,那就肯定知道Python中的字典是什么。只是换了个名字而已。
#-*-coding:utf-8-*- #字典 print ; hashmap={'a':1, 'b':2, 'c':3,'d':4,'e':5}; print "hashmap中的key为c的元素对应的value为:"+str(hashmap['c']); hashmap['f']=6; hashmap.pop('b'); print "hashmap中添加f-6删除b-2之后的值为:"+str(hashmap);其运行结果如下:
Python中的字典就是Json,其声明是完全一样的。其实也就是Java中的HashKey一大堆key-value对的集合,以key找value。
字典是一系列未排序的“键值:值”的集合,在同一字典内键值是互不相同的。对字典的主要操作是以某个键值保存一个值,以及给定键值后查找对应的值。也可以用del删除某个键值:值对。如果用一个已有定义的键值保存某个值则原来的植被遗忘。用不存在的键值去查找会出错。
字典不象序列,它不是用在一个范围之内的数字下标来索引,而是用键值 来索引,键值可以是任何不可变类型。字符串和数值总可以作键值。如果元组只包含字符串 、数值或元组,则元组也可以作键值使用,因为元组是不可更改的。列表不能用作键值,因为列表可以用其append()方法就地改变值。
字典对象的keys()方法返回字典中所有键值组成的列表,次序是随机的。需要排序时只要对返回的键值列表使用sort()方法。为了检查某个键值是否在字典中,使用字典的has_key()方法。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/yongh701/article/details/46897659