【Python】容器类

容器类一度活跃在各大编程语言当中,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()方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 10:11:14

【Python】容器类的相关文章

简明python教程 --C++程序员的视角(四):容器类型(字符串、元组、列表、字典)和参考

数据结构简介 Python定义的类型(或对象)层次结构在概念上可以划分为四种类别:简单类型.容器类型.代码类型 和内部类型. 可以将 PyObject 类之下的所有 Python 类划分为 Python 运行时解释器可以使用的四个主要类别: 简单类型 —— 基本构建块,如 int 和 float. 容器类型—— 保存其他对象. 代码类型—— 封装 Python 程序的元素. 内部类型 —— 程序执行期间使用的类型. 内置的简单类型 Python 有五个内置的简单类型:bool.int.long.

Python中Collections模块的Counter容器类使用教程

1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序字典,是字典的子类.引入自2.7.namedtuple()函数:命名元组,是一个工厂函数.引入自2.6.Counter类:为hashable对象计数,是字典的子类.引入自2.7.deque:双向队列.引入自2.4.defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键.引入自2.

【Python】迭代器

对迭代器和生成器的概念一直很混乱,总结一下: 迭代器: 1.所谓的迭代器,就是具有__next__()方法的对象: 2.__iter__()方法返回一个迭代器对象,这个对象必须具有__next__()方法: 3.一个实现了__iter__()方法的对象是可迭代的,一个实现了__next__()方法的对象是迭代器: 4.内置函数iter()从可迭代对象调用__iter__()方法,并返回一个迭代器对象: 5.内置函数next()调用__next__()方法,并向前推进: 6.for循环会自动调用内

python之最强王者(7)——元组(tuple)

1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器类都可以直接存取,所有的数值类型归为此类. 序列类型是指容器内的元素从0开始的索引顺序访问,一次可以访问一个或者多个元素. 字符串.列表.元组归到次类 映射类型和序列类型不同之处,它使用的索引和顺序的数字偏移量不同,它的元素无序存放,通过唯一的key来访问. 字典就是这种类型. 2.Python 元

Python.python学习(1).学习规划

Python.python学习.学习规划 欢迎收看! 阅读此文表明你也是要学Python这门神奇的语言了.很好,来对地方了,先容我简单介绍一下这个博客系列. 这个系列的博客将会持续专注于Python这个语言的知识积累和开发经验. 编写这个系列,一方面是为了巩固我自己对Python的理解,另一方面也是希望能够分享我的经验,给初学者提供一定帮助.网上现有的各类教程已经汗牛充栋,在我学习的时候就曾参阅过许多教程与文章,它们讲解问题的思路各不相同,综合的阅读使得我最终能够整理起知识的碎片并正确地理解.所

Python描述符常用场景详解

Descriptors( 描述符 ) 是语言中一个深奥但很重要的一个黑魔法,它被广泛应用于 Python 语言的内核,熟练掌握描述符将会为 Python程序员 的工具箱添加一个额外的技巧.本文将讲述描述符的定义以及一些常见的场景,并且在文末会补充一下 __getattr , __getattribute__, __getitem__ 这三个同样涉及到属性访问的魔术方法,希望对大家 学习python有所帮助. 描述符的定义 descr__get__(self, obj, objtype=None)

【转载】python实例手册

今天西爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定.链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢.不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构.它可以通过一

python实例手册

python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德行为. 错误在所难免,还望指正! # python实例手册下载地址: http://hi.baidu.com/quanzhou722/item/cf447