在Python中,最基本的数据结构为序列(sequence)。
序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推。
用负索引表示序列末尾位置的位置。如-1表示最后一个元素,-2表示倒数第二个元素。
我们先了解下序列的概述,然后再了解下适用于所有序列(包括列表和元组)的操作。
一、序列概述
Python内置了多种序列,其中最长用的两种是:列表和元组。另一种重要的序列是字符串。
列表和元组的主要不同在于,列表是可以修改的,而元组不可以。
在需要处理一系列值时,序列很有用。例如
mike = ['Mike', 40] # 分别表示一个人的姓名和年龄
序列还可包含其他序列:
john = ['John', 38]
all = [mike, john]
二、通用的序列操作
有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查。
1、索引
序列中的所有元素都有编号--从0开始递增。可像下面这样使用编号来访问各个元素:
>>> greeting = 'Hello' >>> greeting[0] 'H'
这称为索引。这种索引方式适用于所有序列。
当使用负数索引时,Python将从右(即从最后一个元素)开始向左数,因此-1是最后一个元素的位置。
>>> greeting[-1] 'o'
2、切片
>>> str = 'This is my first python program' >>> str[5:18] 'is my first p'
>>> str[18:-2]
'ython progr'
切片适用于提取序列的一部分。
第一个索引是包含的第一个元素的编号,但并不包含第二个索引所在位置的元素。
如果要从列表末尾开始数,可使用负数索引。
>>> str[-3:-1] 'ra'
如果切片结束于序列末尾,可省略第二个索引。
>>> str[-7:] 'program'
如果切片始于序列开头,可省略第一个索引。
>>> str[:4] 'This'
如果要复制整个序列,可将两个索引都省略。
>>> str[:] 'This is my first python program'
执行切片操作时,也可以指定步长参数,默认为1。步长可正(从左向右提取元素)可负(从右向左提取元素)。
>>> str[5:18:2] 'i yfrtp' >>> str[18:5:-2] 'y si ms'
3、序列相加
可使用加法运算符来拼接序列。
>>> [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>> ['Hello, '] + ['Python!'] ['Hello, ', 'Python!']
4、序列乘法
将序列与数x相乘时,将重复这个序列x次来创建一个新序列:
>>> 'python|' * 5 'python|python|python|python|python|' >>> [10] * 5 [10, 10, 10, 10, 10]
5、成员资格
要检查特定的值是否包含在序列中,可使用运算符in。
满足时返回True,不满足时返回False。
>>> str = 'This is my first python program' >>> 'm' in str True >>> 'my' in str True >>> users = ['Mike', 'John'] >>> 'Mike' in users True
6、内置函数
内置函数len、min和max很有用。
len返回序列包含的元素个数。
min返回序列中最小的元素。
max返回序列中最大的元素。
>>> numbers = [10, 20, 30] >>> len(numbers) 3 >>> max(numbers) 30 >>> min(numbers) 10