所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员。
Python 的常见序列类型包括字符串、列表和元组。前一章介绍过的字符串,其实就是一种常见的序列,通过索引访问字符串内的字符程序就是序列的示范程序。
本节介绍的序列主要是指列表和元组,这两种类型看起来非常相似,最主要的区别在于:元组是不可变的,元组一旦构建出来,程序就不能修改元组所包含的成员(就像字符串也是不可变的,程序无法修改字符串所包含的字符序列);但列表是可变的,程序可以修改列表所包含的元素。
在具体的编程过程中,如果只是固定地保存多个数据项,则不需要修改它们,此时就应该使用元组;反之,就应该使用列表。此外,在某些时候,程序需要使用不可变的对象,比如 Python 要求字典的 key 必须是不可变的,此时程序就只能使用元组。
简单讲,列表和元组的关系就是可变和不可变的关系。
创建列表和元组
创建列表和元组的语法也有点相似,区别只是创建列表使用方括号,创建元组使用圆括号,并在括号中列出元组的元素,元素之间以英文逗号隔开。
创建列表的语法格式如下:
[ele1,ele2,ele3,…]
创建元组的语法格式如下:
(ele1,ele2,ele3,…)
下面代码示范了在程序中定义列表和元组:
a_tuple = ('crazyit', 20, 5.6, 'fkit', -17) print(a_tuple) # 访问第1个元素 print(a_tuple[0]) # crazyit # 访问第2个元素 print(a_tuple[1]) # 20 # 访问倒数第1个元素 print(a_tuple[-1]) # -17 # 访问倒数第2个元素 print(a_tuple[-2]) # -fkit
列表和元组切片
与前面介绍的字符串操作类似的是,列表和元组同样也可使用索引获取中间一段,这种用法被称为 slice(分片或切片)。slice 的完整语法格式如下:
[start : end : step]
上面语法中 start、end 两个索引值都可使用正数或负数,其中负数表示从倒数开始。该语法表示从 start 索引的元素开始(包含),到 end 索引的元素结束(不包含)的所有元素,这和所有编程语言的约定类似。
step 表示步长&