9. Python 序列的应用

195 阅读4分钟

1. 序列

注意:在 Python 中,序列结构主要有列表、元祖、集合、字典和字符串,对于这些序列结构有以下几个通用的操作。其中,集合和字典不支持索引、切片、相加和相乘操作。

  • 索引

    • 序列中每一个元素都有一个编号,也称为索引。这个索引是从 0 开始递增的。
    verse = ['春眠不知晓', 'Python不得了', '夜来爬数据', '好评知多少']
    print(verse[0]) # 春眠不知晓
    print(verso[2]) # 夜来爬数据
    
    • Phthon比较神奇,它的索引可以是负数。这个索引从右向左计数,也就是从最后一个元素开始计数,即最后一个元素索引值是 -1,倒数第二个元素索引值为 -2
    verse = ['春眠不知晓', 'Python不得了', '夜来爬数据', '好评值多少']
    print(verse[-1]) # 好评值多少
    print(verse[-2]) # 夜来爬数据
    
  • 切片 sname[start : end : step] 切片操作是访问序列中的另一种方法,它可以访问一定范围内的元素,成一个新的序列。

    • sname 表示序列的名称

    • start 表示切片的开始位置(包括该位置),如果不指定,则默认为 0

    • end 表示切片的截止位置(不包括该位置),如果不指定,则默认序列的长度

    • step 表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略

    nba = ['迈克尔·乔丹', '比尔·拉塞尔', '卡姆立·阿布杜尔·贾巴尔', '威尔特·张伯伦', '埃尔文·约翰逊', '科比·布莱恩特', '蒂姆·邓肯', '勒布朗·詹姆斯', '拉里·伯德', '沙奎尔奥尼尔']
    print(nba[1:5]) # ['比尔·拉塞尔', '卡姆立·阿布杜尔·贾巴尔', '威尔特·张伯伦', '埃尔文·约翰逊']
    print(nba[0:5:2]) # ['迈克尔·乔丹', '卡姆立·阿布杜尔·贾巴尔', '埃尔文·约翰逊']
    print(nba[:])
    
  • 序列相加

    • 在 Python 中,支持两种相同类型的序列相加操作,即使两个序列进行连接,不会去除重复的元素,在使用 加(+) 运算符实现。例如,将两个列表(list) 或者 元祖(tuple) 相加,可以使用下面的代码。
    num1 = [1, 2, 3]
    num2 = [3, 4, 5]
    print(num1 + num2) # [1, 2, 3, 3, 4, 5]
    
    num1 = (1, 2, 3)
    num2 = (3, 4, 5)
    print(num1 + num2) # (1, 2, 3, 3, 4, 5)
    
  • 乘法

    • 在 Python 中,使用数字 n 乘以一个序列会生成新的序列。新的序列的内容为原来序列被重复 n 次的结果。例如,下面代码,将实现把一个序列乘以 3 生成一个新的序列并输出。从而达到 "重要事情说三遍" 的效果。
    phone = ['华为Mate 10', 'Vivo X21']
    print(phone * 3) # ['华为Mate 10', 'Vivo X21', '华为Mate 10', 'Vivo X21', '华为Mate 10', 'Vivo X21']
    
    • 在进行序列的乘法运算时,还可以实现初始化指定成都列表的功能。例如下面的代码,将创建一个长度为5的列表,列表的每个元素都是 None,表示什么都没有。
    emptylist = [None] * 5
    print(emptylist) # [None, None, None, None, None]
    
  • 检查某个元素是否是序列的成员

    • 在 Python 中,可以使用 in 关键字 检查某个元素是否为序列的成员,即检查某个元素是否包含在某个序列中。value in sequence,value 表示要检查的元素,sequence 表示指定的序列。
    nba = ['德怀特·霍华德', '德维恩·韦德', '凯里·欧文', '保罗·加索尔']
    print('保罗·加索尔' in nba) # True
    
    • 另外,在 Python 中,也可以使用 not in 关键字实现检查某个元素是否不包含在指定序列中。例如下面的代码,将显示结果 False
    nba = ['德怀特·霍华德', '德维恩·韦德', '凯里·欧文', '保罗·加索尔']
    print('保罗·加索尔' not in nba) # False
    
  • 计算序列的长度、最大值和最小值

    • 在 Python 中,提供了内置函数计算序列的长度、最大值和最小值。分别是:使用 len() 函数计算序列的长度,即返回序列包含多少个元素;使用 max() 函数返回序列中最大元素;使用 min() 函数返回序列中最小的元素。
    num = [7, 14, 21, 28, 35, 42, 49, 56, 63]
    print(len(num)) # 9
    print(max(num)) # 63
    print(min(num)) # 7
    
  • Python 提供的内置函数及其作用

    • list() 将序列转换为列表

    • str() 将序列转换为字符串

    • sum() 计算元素和

    • sorted() 对元素进行排序

    • reversed() 反向序列中的元素

    • enumerate() 将序列组合为一个索引序列,多用在 for 循环中