简介
计算机不仅对单个变量表示的数据进行处理,更通常的情况是,计算机需要对一组 数据进行批量处理
例如:
(1) 给定一组单词 {
python, data, function, list, loop},计算并输出每个单词的长度
(2) 给定一个学院的学生信息,统计男女生比例
(3) 一次实验产生了很多组数据,对这些大量数据进行分析
以单词统计问题为例,在计算一个单词长度之前,程序需要使用一个 变量表示这个单词,对于一组单词,需要很多个变量。有两个解决方案:
为每个单词分配一个变量,从变量命名上加以区分,例如,a01、 a02 分别存储第一个、第二个元素;或者采用一个数据结构存储这组数据,对每个元素采用索引加以区分,例如用 a 表示这组元素,那么a[0] 为该组第一个元素, a[1] 为第二个元素
两个方案哪个更好呢?
很显然,第二个方案更好。假定单词数量是 500 个而不是 5 个,使用第一种方法将是灾难。此外,对每个元素单独定义变量,不利于循环操作
我们学过数字类型,包括整数类型、浮点数类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型。 然而,实际计算中却存在大量同时处理多个数据的情况,这需要将多个数据有效组织起来并统一表示,这种能够表示多个数据的类型称为组合数据类型
组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易。根据数据之间的关系,组合数据类型可以分为 3 类:序列类型、集合类型和映射类型
序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排它
集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在
映射类型是 “键-值” 数据项的组合,每个元素是一个键值对 ,表示为 (key, value)。在 Python 中,每一类组合数据类型都对应一个或多个具体的数据类型
Python 支持的具体组合数据类型如下图所示:
序列类型
引入
序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。序列的基本思想和表示方法均来源于数学概念。在数学中,经常给每个序列一个名字,例如,n 个数的序列 S,可以表示如下:
S = s0,s1,s2, ... ,sn-1
当需要访问序列中某个特定值时,只需要通过下标标出即可。例如,需要找到第 2 个元素,即可通过 s1 获得。这种采用集合名字和下标相结合的表示方法可以简洁地表示序列运算
由于元素之间存在顺序关系,所以序列中可以存在数值相同但位置不同的元素。序列类型支持成员关系操作符 (in)、 长度计算函数 (len())、 分片([]),元素本身也可以是序列类型
Python 语言中有很多数据类型都是序列类型,其中比较重要的是 str (字符串)、tuple (元组) 和 list (列表)。字符串 (str) 可以看成是单一字符的有序组合,属于序列类型。同时,由于字符串类型十分常用且单一字符串只表达一个含义,也被看作是基本数据类型。元组是包含 0 个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。列表则是一 个可以修改数据项的序列类型,使用也最灵活。无论哪种具体数据类型,只要它是序列类型,都可以使用相同的索引体系,即正向递