1. Python序列的定义

    Python中最基本的数据结构就是序列,序列中的每个元素都有编号,这些编号可以称为下标或者索引,类似于Java的数组或者list。第一个元素的索引为0,第二个元素的索引为1,以此类推,最后一个元素的索引为n-1。
    Python中序列分为两部分,列表和元组,这两种结构的不同在于,序列可以修改,而元组不可以修改,只能检索。

2. 序列的相关操作

    序列相关的操作主要有:索引、切片、相加、相乘和成员资格检查,接下来将分别介绍这几种操作的一些知识点。
    索引:前文讲过,序列在Python中属于序列的一种,所以序列也是有索引的概念的,当然也就可以通过索引来获取序列中指定位置的元素了,举个例子来说明一下:

# 定义一个元素类型为整数的序列
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 获取并打印这个序列中索引为0的元素
value = number[0]
# 打印结果是1
print(value)

    通过这个简单例子可以看到,Python中获取序列中指定位置的元素是通过序列名+两个左右方括号的方式实现的,方括号中的索引值可以是正整数也可以是负整数,正整数表示检索的方向是从左到右,负整数则表示从右向左,比如number[-1]的值就是10.当然了,上面的例子只是介绍了最简单的检索方式,接下来将介绍一些相对高级和复杂的检索方式。

    切片:上面介绍了索引的简单用法,索引可以用来访问序列中的单个元素,如果要想访问序列内特定范围的元素就需要使用切片。切片的作用就是通过指定一段索引范围来检索序列中的某一段范围内的元素。继续通过例子来体现

# 获取number中1-5范围内的元素
value = number[0:5]
# 打印结果是[1, 2, 3, 4, 5]
print(value)

    从例子可以看出,切片主要用于截取序列的一部分。切片主要由三部分构成,开始索引、冒号和结束索引,其中最主要的就是开始索引和结束索引,这两个位置决定了切片的取值范围。在计算取值范围是容易出错,在Python中可以这样理解,从起始位置开始往后数(结束索引-起始索引)个位置(不包含结束位置数)之后得到的就是取值范围。需要注意的是,切片的取值范围包含起始索引对应的值,但是不包含结束索引对应的值。

    关于切片的一些其他相关知识点:

  1. 切片的结束索引如果超出序列范围不会引起下标越界的bug,而是直接检索到最后一个元素。
  2. 如果要从序列末尾开始检索,可以使用负数索引
  3. 如果要从序列的指定位置检索到序列末尾,可以省略第二个索引
  4. 如果切片开始于序列的起始位置,可以省略第一个索引
  5. 切片可以显示指定步长(step),格式是[firstIndex:endIndex:step],默认步长是1,不用指定

    **相加:**可以使用相加操作拼接序列或者其他序列,示例:

# 序列拼接相加
number_1 = [1, 2, 3]
number_2 = [4, 5, 6]
print(number_1+number_2)
# 打印结果是
[1, 2, 3, 4, 5, 6]

    一般而言,不能拼接不同类型的序列,比如将序列和字符串拼接,这样会出错,虽然他们都是序列。如果序列和字符串拼接会出现以下错误:

TypeError: can only concatenate list (not "string") to list

    乘法 定义一个序列numbers和一个数字x,将numbers和x相乘会将numbers重复x次产生一个新的序列。

>>> numbers = [1,2,3]
>>> print(numbers*2)
[1, 2, 3, 1, 2, 3]

    额外的知识点:

关于空序列和None

  1. 如果要表示没有任何元素的空序列,可以使用两个方括号表示,比如[]
  2. 如果要表示还没有在序列中添加内容,可以使用None表示,比如[None]

    成员资格检查: 成员资格检查就是检查指定元素是否包含在序列中,使用in操作符表示。in 操作符返回一个布尔值,true表示元素在序列范围内,false表示元素不在序列范围内。举个例子:

>>> numbers = [1,2,3]
>>> >>> 1 in numbers
True
>>> 4 in numbers
False

    关于序列简单介绍到这里,下一篇介绍列表