Python中的组合数据类型

计算机不只能对单个变量表示的数据进行处理,一般状况下,计算机更须要对一组数据进行批量处理。这种可以表示多个数据的类型称为组合数据类型。Python语言最经常使用的组合数据类型有3大类,分别是集合类型、序列类型和映射类型。shell

集合类型是一个元素集合,元素之间无序,相同元素在集合中惟一存在。编程

序列类型是一个元素向量,元素之间存在前后关系,经过序列号访问,元素之间不排他。序列类型的典型表明是字符串类型和列表类型。ruby

映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。映射类型的典型表明是字典类型。集合类型是一个具体的数据类型,而序列类型和映射类型都是一类数据类型的总称。bash

一、集合类型概述

Python语言中的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。集合是无序组合,用大括号({ })表示,他没有索引和位置的概念,集合中的元素能够动态的增长和删减。函数

集合中的元素不可重复,元素类型只能是不可变数据类型,例如整数、浮点数、字符串、元组。相比而言,列表、字典和集合类型自己都是可变数据类型,不能做为集合的元素出现。ui

建立集合直接用大括号表示,集合间没有顺序,不能比较,不能排序。若是向集合输入重复的元素,会自动去重。代码演示以下:spa

string = "Python真简单啊" num = 8 A = {1,"2",'34',5.0,6+7j,string,num}#内容能够是变量表明的数据 print(A) #输出结果为 {1, '2', 5.0, 8, '34', 'Python真简单啊', (6+7j)} B = {string,num,A}#不能够含有集合A,会报错 print(B) #报错状况为: Traceback (most recent call last): File "C:\Users\Durova\Desktop\demo.py", line 5, in <module> B = {string,num,A} TypeError: unhashable type: 'set' 

集合类型有四种基本的操做,分别为交集(&)、并集(|)、补集(^)、差集(-),以下表:3d

 

 

 

演示以下:code

>>> S = {1,2,3,4,5} >>> T = {4,5,6,7,8} >>> S-T {1, 2, 3} >>> S|T {1, 2, 3, 4, 5, 6, 7, 8} >>> S&T {4, 5} >>> S^T {1, 2, 3, 6, 7, 8} 

集合类型有一些经常使用的操做函数或方法,以下表:blog

 

这些函数或方法的使用与普通函数或方法一致,前面的教程中已经有演示,这里仅演示较为特殊的set()函数。

set()函数将其余的组合数据变成集合类型,返回结果是一个无重复且排序任意的集合。set()函数也能够生成空集合变量。演示以下:

>>> s = set() >>> s set()#表示空集合 >>> s = set("知之为知之不知为不知是知也") >>> s {'为', '不', '是', '知', '也', '之'}#这种方法多用于去重,适合于任何组合数据类型。 

二、序列类型概述

序列类型是一维元素向量,元素之间存在前后关系,经过序号访问。序列的基本思想和表示方法来源于数学中的数列概念。在数学中,数列S由n个数表示,分别为s一、s2……sn-一、sn.每个数在数列中都有特定的序号,这些序号提供了辨别他们的索引号。

在Python序列类型中一样如此。当须要访问序列中的某个特定值时,只须要经过下标标出便可。Python中有不少数据类型都是序列类型,其中比较重要的是字符串类型、列表类型和元组类型。

序列类型都使用相同的索引体系,与以前介绍的字符串类型同样,即正向递增序号和反向递减序号。一样须要注意,正向递增序号的第一个元素,其序列号为0。

 

 

序列类型由一些通用的操做符和函数,以下表:

 


序列类型中较为重要的字符串类型已经讲解过了,列表类型将在下节介绍,还有一种很是重要的序列类型是元组类型,咱们将用元组类型来演示上述操做符和函数来同时熟悉元组类型和序列类型的操做。演示以下:

>>> t = (1,2,3,4.0,5.0,'6')#建立一个元组 >>> type(t) <class 'tuple'>#元组类型用tuple表示 >>> 1 in t True >>> 4.0 in t True >>> 4 in t True#这里4和4.0是等值的 >>> 4.1 in t False#元组中不存在4.1 >>> "5.0" not in t True#字符串“5.0”不在元组中 >>> s = ("7","8") >>> t + s (1, 2, 3, 4.0, 5.0, '6', '7', '8')#两个元组相加 >>> s * 2 ('7', '8', '7', '8')#将元组s重复两次 >>> t[2] 3 >>> t[1:2] (2,)#数学上的左闭右开区间 >>> t[0:4:2] (1, 3)#在[0,4]的区间内,从0开始,步长为2,第二个为3,第三个超出区间,不选 >>> len(t) 6#元素数量,简单易懂 >>> min(t)#元素之间不可比较,报错 Traceback (most recent call last): File "<pyshell#28>", line 1, in <module> min(t) TypeError: unorderable types: str() < int() >>> max(s)#元素之间能够比较 '8'#返回最大值 >>> t.index(2) 1#元素2的全部,只有一个,若是由重复元素,返回正向递增序列号中较小的那个 >>> t.count(4.0) 1#元素4.0出现的次数 

元组类型一旦定义就不能修改,在编程中不够灵活,同时,元组类型的全部操做均可以由列表实现。所以,通常编程中,若是须要自定义变量,一般以列表类型替代元组类型使用。若是确认编程中确认不须要修改数据,能够经过使用元组数据类型来节省资源。

元组类型主要在Python语法相关的场景使用,例如,当函数返回多个值时,实际返回的是一个元组类型。

三、映射类型概述

映射类型是“键-值”数据类型的组合,每一个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对是一种二元关系,源于属性和值的映射关系。

映射类型是序列类型的一种扩展,在序列类型中,采用从0开始的正向递增序号进行具体元素值的索引。而映射类型则用用户来定义的序号,即键,去索引具体的值。

键表示一个属性,也能够理解为一个类别或项目,值是属性和内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。

相关文章
相关标签/搜索