Python 基础学习03:序列的通用操作

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

长度、最小值和最大值

内置函数 lenminmax 用于返回序列中的长度、最小值和最大值。

numbers = [12, 67, 8, 122]
len(numbers)
4
min(numbers)
8
max(numbers)
122

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

滚动至顶部