本章将介绍一个新概念: 数据结构。数据结构是以某种方式(如通过编号)组合起来的数据元素(如数、字符乃至其他数据结构)集合。在Python中,最基本的数据结构为序列(sequence)。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推。在有些编程语言中,从1开始给序列中的元素编号,但从0开始指出相对于序列开头的偏移量。这显得更自然,同时可回绕到序列末尾,用负索引表示序列末尾元素的位置。你可能认为这种编号方式有点怪,但我敢肯定,你很快就会习惯的。
本章首先对序列进行概述,然后介绍一些适用于所有序列(包括列表和元组)的操作。这些操作也适用于本章一些示例中将使用的字符串,下一章将全面介绍字符串操作。讨论这些基本知识后,将着手介绍列表,看看它们有什么特别之处,然后讨论元组。元组是一种特殊的序列,类似于列表,只是不能修改。
2.1 序列概述
Python内置了多种序列,本章重点讨论其中最常用的两种:列表和元组。另一种重要的序列是字符串,将在下一章更详细地讨论。
列表和元组的主要不同在于,列表是可以修改的,而元组不可以。这意味着列表适用于需要中途添加元素的情形,而元组适用于出于某种考虑需要禁止修改序列的情形。禁止修改序列通常出于技术方面的考虑,与Python的内部工作原理相关,这也是有些内置函数返回元组的原因所在。在你自己编写程序时,几乎在所有情况下都可使用列表来代替元组。一种例外情况是将元组用作字典键,这将在第4章讨论。在这种情况下,不能使用列表来代替元组,因为字典键是不允许修改的。
在需要处理一系列值时,序列很有用。在数据库中,你可能使用序列来表示人,其中第一个元素为姓名,而第二个元素为年龄。如果使用列表来表示(所有元素都放在方括号内,并用逗号隔开),将类似于下面这样:
>>> edward = ['Edward Gumby', 42]
序列还可包含其他序列,因此可创建一个由数据库中所有人员组成的列表:
>>> edward = ['Edward Gumby', 42]
>>> john = ['John Smith', 50]
>>> database = [edward, john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]
注意:Python支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。映射将在第4章详细讨论。有一种既不是序列也不是映射的容器,它就是集合(set),将在第10章讨论。
领取专属 10元无门槛券
私享最新 技术干货