Python学习笔记(五)组合数据类型

天大地大妈咪最大 提交于 2019-12-02 11:57:12

  在之前我们学会了数字类型,包括整数类型、浮点类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型。然而,实际计算中却存在大量同时处理多个数据的情况,这种需要将多个数据有效组织起来并统一表示,这种能够表示多个数据的类型称为组合数据类型

一、组合数据类型概述

组合数据类型更能够将多个同类或不同类型组织起来,通过单一的表示使数据更有序、更容易。根据数据之间的关系,组合数据类型可以分为3类:序列类型、集合类型和映射类型

序列类型是一个元素向量,元素之间的存在先后关系,通过序号访问,元素之间不排他。

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

映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key, value)。

 

1.序列类型

序列类型是一堆元素向量,元素之间存在先后关系,通过序号访问。

Python中有很多数据类型都是序列类型,其中比较重要的是str(字符串)、tuple(元组)list(列表)可以看成是单一字符的有序序列,属于序列类型。

序列类型有12个通用的操作符和函数

 

操 作 符 描         述
x in s 如果x是是的元素,返回True,否者返回False
x not in s 如果x不是s的元素,返回True,否则返回False
s + t 连接S和t
s * n 或  n * s 将序列s复制n次
s[i] 索引,返回序列的第i个元素
s[i:j] 分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素)
s[i:j:k] 步骤分片,返回包含序列s第i到j个元素以k为步数的子序列
len(s) 序列s的元素个数(长度)
min(s) 序列s中的最小元素
max(s) 序列s中的最大元素
s.index(x(,i[,j])) 序列s中从i开始到j位置中第一次出现的元素x的位置
s.count(x) 序列中出现x的总次数

元组(tuple)是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。Python中元组采用逗号和圆括号(可选)来表示,如:

>>>creature = "cat", "dog", "tiger", "bear"
       print(creature)
>>>('cat', 'dog', 'tiger', 'bear')>>>creature = "cat", "dog", "tiger", "bear"  all=(1,2,456,creature)  #元组中包含元组creature  print(all)  print(all[2])  print(all[-1][2])>>>(1, 2, 456, ('cat', 'dog', 'tiger', 'bear'))>>>456>>>tiger

其中,一个元组可以作为另一个元组的元素,可以采用多级索引获取信息,例如上面的元组all中包含了元组creature,可以用all[-1][2]获取对应元素值。

 

元组除了用于表达固定数据外,还常用于以下3种情况:函数多返回值、多变量同步赋值、循环遍历,例如:

>>>def func(x):          #函数多返回值      
           return x,x*x;   >>>a,b = 'dog','cat'  #多变量同步赋值>>>import math        #循环遍历  for x,y in ((1,0),(2,5),(3,8)):    print(math.hypot(x,y))    #求多个坐标值到原点的距离

 

2.集合类型

集合类型与数学中集合的概念一致,即包含0个或多个数据项的无序组合。

集合中的元素不可重复,元素类型只能是固定数据类型,例如集合、浮点数、字符串、元组等,列表、字典、和集合类型本身都是可变数据类型,不能作为集合的元素出现。

由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加和删除。集合用大括号({})表示,可以用赋值语句生成一个集合,例如:

>>>S={100,200,(666,25),"YES",458}
        print(S)
>>>{100, 200, 458, 'YES', (666, 25)}

从上面可以看出,由于集合的元素是无序的,集合的打印效果与定义顺序可以不一致。

集合类型有10个操作符

操 作 符 描    述
S-T 或 S.difference(T) 返回一个新集合,包括在集合S中但不在集合T中的元素
S-=T 或 S.difference_update(T) 更新集合S,包括在集合S中但不在集合T中的元素
S & T 或 S.intersection(T) 返回一个新集合,包括同时在集合S和T中的元素
S&=T 或 S.intersection_update(T) 更新集合S,包括同时在集合S和T中的元素
s=^T 或 S.symmetric-difference(T) 返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素
s=^T 或 S.symmetric-difference_update(T) 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素
S|T 或 S.union(T) 返回一个新集合,包括集合S和T中的所有元素
S=|T 或 S.update(T) 更新集合S,包括集合S和T中的所有元素
S<=T 或 S.update(T) 如果S和T相同或S是T的子集,返回True,否则返回False,可以用S>T判断S是否是T的真子集
S>=T 或 S.issuperset(T) 如果S和T相同或S是T的超集,返回True,否则返回False,可以用S>T判断S是否是T的真超集

集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。

 

3.映射类型 

映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。

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

在Python中,映射类型主要以字典(dict)体现。

 

二、列表类型和操作

列表是包含0个或多个对象引用的有序序列,没有长度限制,可自由增删元素,使用灵活。

1.列表类型的概念

列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除或替换

2.列表类型的操作

函数或方法 描述
ls[i] = x 替换类表 ls 第 i 数据项为 x
ls[i:j] =l t 用列表 lt 替换列表 ls 中第 i 到第 j 项数据(不含第 j 项)
ls[i:j:k] = lt 用列表 lt 替换列表 ls 中第 i 到第j项以k为步数的数据(不含第j项)
del ls[i:j] 删除列表 ls 第i到第 j 项数据,等价于ls[i:j]=[]
del ls[i:j:k] 删除列表 ls 第 i 到第 j 项以 k 为步数的数据
ls += lt 或 ls.extend(lt) 将列表 lt 元素增加到列表 ls 中
ls *= n 更新列表 ls,其元素重复 n 次
ls.append(x) 在列表 s 最后增加一个元素 x
ls.clear() 删除 ls 中的所有元素
ls.copy() 生成一个新列表,复制 ls 中的所有元素
ls.insert(i,x) 在列表 ls 的第 i 位置增加元素 x
ls.pop(i) 将列表 ls 中的第 i 项元素取出并删除该元素
ls.remove(x) 将列表中出现的第一个元素 x 删除
ls.reserve(x) 列表 ls 中的元素反转

 

 

三、字典类型和操作

列表是存储和检索数据的有序序列。当访问列表中的元素时,可以通过整数的索引来查找它,这个索引时元素在列表中的符号,列表的索引模式是“<整数序号>查找<被索引内容>”

 

1.字典类型的概念

通过任意键信息查找一组数据中值信息的过程叫做映射,Python语言中通过字典实现映射。Python语言中的字典可以通过大括号({})建立,建立模式如下:

{<键1>:<值1>, <键2>:<值2>, ... ,<键n>:<值n>}

其中,键和值通过冒号连接,不同键值对通过逗号隔开。

例如:

>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
       print(Dic)
       print(Dic["中国"])    
>>>{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
>>>中国

一般来说,字典中键值对的访问模式如下,采用中括号格式:

<值> = <字典变量> [<键>]

 

2.字典类型的操作

与列表类似Python字典也有非常灵活的操作方法。使用大括号可以创建字典,并指定初始值,通过中括号可以增加新的元素,例如:

>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
       Dic{"英国"}="伦敦"
       print(Dic)
>>>{"中国":"北京","美国":"华盛顿","法国":"巴黎","英国":"伦敦"}

注意:直接使用大括号({})生成一个空的字典。生成空集合需要使用函数set()。

字典类型的函数和方法:

函数和方法 描     述
<d>.keys() 返回所有的键信息
<d>.values() 返回所有的值信息 
<d>.items() 返回所有的键值对 
<d>.get(<key>,<default>) 键存在则返回相应值,否则返回默认值 
<d>.pop(<key>,<default>) 键存在则返回返回值,同时删除键值对,否则返回默认值 
<d>.popitem() 随机从字典中取出一个键值对,以元组(key,value)形式返回 
<d>.clear()  删除所有的键值对 
 del<d>[<key>]  删除字典中某一个键值对 
 <key>in<d> 如果键在字典中返回True,否则返回False 

与其他组合类型一样,字典可以通过for-in语句对其元素进行遍历,例如:

>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
       for i in Dic:
           print(i)
>>>中国
   美国
   法国

所以,字典有以下一些基本原则:

(1)字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息。

(2)字典中元素以键信息为索引访问。

(3)字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!