python的序列,映像和集合类型

来源:互联网 发布:类似于淘宝的购物软件 编辑:程序博客网 时间:2024/06/06 14:26

python提供了许多非常便利的类型,往往许多编程语言中需要几十行代码才能实现的功能,在python里面用一个类型就能轻松解决。

序列

在python中有这样一种类型,他们的成员有序排列,并且可以通过下标偏移量访问到他们的一个或几个成员,类似于C语言中的数组,这类python类型就统称为序列。

序列的一些基本操作

  • 成员关系操作符(in,not in)可以用来判断元素是否属于某个序列,结果返回布尔值,是不是感觉很方便,如果换了在C语言中,需要判断一个元素是否存在数组中,就只能循环遍历
l = [1,2,3,4,5]2 in lTrue
  • 连接操作符(+)能够将两个相同类型的序列做连接
L1 = [1,2,3,4,5]L2 = [6,7,8,9]L1+L2[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 重复操作符(*),将一个序列复制多份
L1 = [1,2,3,4,5]L2 = L1*3L2[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
  • 切片操作,按照你的意愿访问序列的多个元素([beg:end:step])其中beg是你想取的序列的起始下标,end是你要取到哪里为止,也就是终止下标,但end这个下标你是取不到的,step就是你取得时候移动的步长,即隔多少个取一个,总而言之就是在[beg,end)这个左开右闭的区间内隔step个取一个值。下面是一个简单实例,我要实现取出0到10之间的奇数。
L1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]L1[1:-1:2][1, 3, 5, 7, 9]

序列的分类

  • 字符串,python中实际上有三种字串,str,unicode,basestring,其中str和unicode字符串都是抽象类basestring的子类,而抽象类是不能被实例化的,python中通过单引号,双引号,以及三引号来定义str字符串,如(’ hello world’),其中单引号和双引号的作用是相同的,在str字符串前加上一个字母u即为unicode字符串,如(u’hello world’)。
str = 'hello world'type(str)<type 'str'>uni = u'hello world'type(uni)<type 'unicode'>
  • 列表,像字符串一样列表也是序列式的类型,可以通过下标或者切片的方式来访问元素,但字符串只能由字符组成,而且是不可变的(不能单独改变它的某个值),但列表是能够保留任意数量python对象的灵活的容器,可以修改,可以嵌套字符串,元组等其他类型。
str = '1234123412'id(str)63626288Lstr[2] = '9'Traceback (most recent call last):  File "<input>", line 1, in <module>TypeError: 'str' object does not support item assignment
L1 = [0, 1, 2, 10, 4, 5, 6, 7, 8, 9, 10]id(L1)62143624LL1[2]=100L1[0, 1, 100, 10, 4, 5, 6, 7, 8, 9, 10]id(L1)62143624L
  • 元组,实际上元组是与列表非常相近的一种容器类型,支持下标索引和切片操作,看上去的区别只有,元组是用圆括号而列表用的是方括号,但元组和列表相比有一个非常重要的区别,元组是一种不可变类型(这一点与字符串类似),元组中也可以嵌套字符串,列表等其他类型。
aTuble = (1,2,3,4,"abc",[1,2,3])print aTuble(1, 2, 3, 4, 'abc', [1, 2, 3])aTuble[1] = 9Traceback (most recent call last):  File "<input>", line 1, in <module>TypeError: 'tuple' object does not support item assignment

映射类型:字典

字典是python中唯一的映射类型,它包含哈希值(键,key)和指向的对象(值,value),通过键”映射“到值,可以把本来毫无关系的两个对象建立起联系,它是一个可变的容器类型,能存储任意个python对象,与序列不同,字典是无序的,它通过键对值进行访问,而且具有很好的性能,用键查询非常快。

dict1 = {"name":"xxx","id":"123456789"}dict1["name"]'xxx'dict1["id"]'123456789'

集合类型

没错,这里的集合就是数学中所谓的集合,它满足无序性、确定性、互异性,支持求交集,并集,差集等运算,十分方便。集合有两种不同类型,可变集合(set)和不可变集合(frozenset),见名知意,可变集合,即可以添加和删除元素,而不可变的则不能进行此类操作。

s1 = set([1,2,3,4,5])s2 = set([2,3,8,7,9])s1&s2set([2, 3])s1|s2set([1, 2, 3, 4, 5, 7, 8, 9])
原创粉丝点击