文章大纲
Python 中,最基本的数据结构为序列。
序列中的每个元素都有编号,称为位置或索引,索引是从 0
开始。
Python 内置了多种序列,最常用的是:列表和元组。
列表和元组的区别在于,列表可修改而元组不可以。
对序列通用的操作
几种操作适用于所有序列:
- 索引
- 切片
- 相加
- 相乘
- 成员资格
除此,Python 还提供了一些内置函数,用于确定序列的:
- 长度
- 最小值
- 最大值
索引
序列中的所有元素都有编号,从 0
开始递增,可以通过编号来访问各个元素:
greeting = 'Hello'
greeting[0]
'H'
字符串也是序列。
编号如果是负数,Python 会从右开始往左数,-1
代表的就是最后一个元素:
greeting[-1]
'o'
如果函数返回一个序列,可直接对其执行索引操作,例如:
fourth = input('Year: ')[3]
Year: 2009
print(fourth)
9
切片
通过切片可以访问特定范围内的元素,使用两个索引来确定范围,使用 :
分隔:
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:6])
[4, 5, 6]
print(numbers[0:2])
[1, 2]
第一个索引指定的元素包含在切片中,第二个索引指定的元素不在切片中。
切片的简写
如果是从序列特定位置切片到末尾,可简写成:
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:])
[4, 5, 6, 7, 8, 9, 10]
:
后面不指定索引代表切片到最后一个元素,同理如果 :
前面不指定索引,则代表切片是从序列的第一个元素开始。
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[:5])
[1, 2, 3, 4, 5]
如果切片只有一个冒号,则代表是整个序列:
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[:])
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
切片的步长
步长在切片当中默认是省略的,默认步长是 1
,可以显式的指定步长:
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[::2])
[1, 3, 5, 7, 9]
步长不能为 0
,但可以是负数,负数代表从右往左提取元素。
序列相加
可以使用加法运算符来拼接序列:
[1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
'Hello' + 'World'
'HelloWorld'
不能拼接不同类型的序列:
[1,2,3] + 'Hello'
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
[1,2,3] + 'Hello'
TypeError: can only concatenate list (not "str") to list
序列相乘
将序列与 X
相乘时,将重复这个序列的 X
次来创建一个新的序列:
'Hello' * 3
'HelloHelloHello'
None、空列表和初始化
创建空列表可以通过以下方式,创建了长度为 10
的空列表:
sequence = [None] * 10
成员资格
要检查特定的值是否包含在序列中,可使用运算符 in
。in
返回布尔值,当特定的值包含在序列中时返回 True
,反之返回 False
:
numbers = [1,2,3,4,5,6,7,8,9,10]
2 in numbers
True
11 in numbers
False
长度、最小值和最大值
内置函数 len
、min
和 max
用于返回序列中的长度、最小值和最大值。
numbers = [12, 67, 8, 122]
len(numbers)
4
min(numbers)
8
max(numbers)
122