zoukankan      html  css  js  c++  java
  • 038 序列类型操作-元组类型和列表类型

    一、概要

    • 序列类型定义
    • 序列处理函数及方法
    • 元组类型及操作
    • 列表类型及操作
    • 序列类型应用场景

    二、序列类型定义

    序列是具有先后关系的一组元素

    • 序列是一维元素向量,元素类型可以不同
    • 类似数学元素序列: s0, s1, … , sn-1
    • 元素间由序号引导,通过下标访问序列的特定元素

    序列是一个基类类型

    038-序列类型操作-元组类型和列表类型-01.jpg?x-oss-process=style/watermark

    2.1 序号的定义

    038-序列类型操作-元组类型和列表类型-02.jpg?x-oss-process=style/watermark

    三、序列处理函数及方法

    操作符及应用 描述
    x in s 如果x是序列s的元素,返回True,否则返回False
    x not in s 如果x是序列s的元素,返回False,否则返回True
    s + t 连接两个序列s和t
    sn 或 ns 将序列s复制n次
    s[i] 索引,返回s中的第i个元素,i是序列的序号
    s[i: j] 或 s[i: j: k] 切片,返回序列s中第i到j以k为步长的元素子序列

    3.1 序列类型操作实例

    ls = ['python', 123]
    ls[::-1]
    
    [123, 'python']
    
    s = 'python123'
    s[::-1]
    
    '321nohtyp'
    

    3.2 序列类型通用函数和方法

    函数和方法 描述
    len(s) 返回序列s的长度
    min(s) 返回序列s的最小元素,s中元素需要可比较
    max(s) 返回序列s的最大元素,s中元素需要可比较
    s.index(x) 或s.index(x, i, j) 返回序列s从i开始到j位置中第一次出现元素x的位置
    s.count(x) 返回序列s中出现x的总次数
    ls = ['python', 123]
    len(ls)
    
    2
    
    s = 'python123'
    max(s)
    
    'y'
    

    四、元组类型及操作

    4.1 元组类型定义

    元组是序列类型的一种扩展

    • 元组是一种序列类型,一旦创建就不能被修改
    • 使用小括号 () 或 tuple() 创建,元素间用逗号 , 分隔
    • 可以使用或不使用小括号
    creature = "cat", "dog", "tiger", "human"
    creature
    
    ('cat', 'dog', 'tiger', 'human')
    
    color = (0x001100, "blue", creature)
    color
    
    (4352, 'blue', ('cat', 'dog', 'tiger', 'human'))
    

    4.2 元组类型操作

    元组继承序列类型的全部通用操作

    • 元组继承了序列类型的全部通用操作
    • 元组因为创建后不能修改,因此没有特殊操作
    • 使用或不使用小括号
    creature = "cat", "dog", "tiger", "human"
    creature[::-1]
    
    ('human', 'tiger', 'dog', 'cat')
    
    color = (0x001100, "blue", creature)
    color[-1][2]
    
    'tiger'
    

    五、列表类型及操作

    5.1 列表类型定义

    列表是序列类型的一种扩展,十分常用

    • 列表是一种序列类型,创建后可以随意被修改
    • 使用方括号 [] 或list() 创建,元素间用逗号 , 分隔
    • 列表中各元素类型可以不同,无长度限制
    ls = ["cat", "dog", "tiger", 1024]
    ls
    
    函数或方法 描述
    ls[i] = x 替换列表ls第i元素为x
    ls[i: j: k] = lt 用列表lt替换ls切片后所对应元素子列表
    del ls[i] 删除列表ls中第i元素
    del ls[i: j: k] 删除列表ls中第i到第j以k为步长的元素
    ls += lt 更新列表ls,将列表lt元素增加到列表ls中
    ls *= n 更新列表ls,其元素重复n次
    ls = ["cat", "dog", "tiger", 1024]
    ls[1:2] = [1, 2, 3, 4]
    ls
    
    ['cat', 1, 2, 3, 4, 'tiger', 1024]
    
    del ls[::3]
    ls
    
    [1, 2, 4, 'tiger']
    
    ls * 2
    
    [1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
    

    5.2 列表类型操作函数和方法

    函数或方法 描述
    ls.append(x) 在列表ls最后增加一个元素x
    ls.clear() 删除列表ls中所有元素
    ls.copy() 生成一个新列表,赋值ls中所有元素
    ls.insert(i,x) 在列表ls的第i位置增加元素x
    ls.pop(i) 将列表ls中第i位置元素取出并删除该元素
    ls.remove(x) 将列表ls中出现的第一个元素x删除
    ls.reverse() 将列表ls中的元素反转
    ls = ["cat", "dog", "tiger", 1024]
    ls.append(1234)
    ls
    
    ['cat', 'dog', 'tiger', 1024, 1234]
    
    ls.insert(3, "human")
    ls
    
    ['cat', 'dog', 'tiger', 'human', 1024, 1234]
    
    ls.reverse()
    ls
    
    [1234, 1024, 'human', 'tiger', 'dog', 'cat']
    

    5.3 列表功能默写

    5.3.1 题目

    • 定义空列表lt
    • 向lt新增5个元素 --> lt += [1,2,3,4,5]
    • 修改lt中第2个元素
    • 向lt中第2个位置增加一个元素
    • 从lt中第1个位置删除一个元素
    • 删除lt中第1-3位置元素
    • 判断lt中是否包含数字0
    • 向lt新增数字0
    • 返回数字0所在lt中的索引
    • lt的长度
    • lt中最大元素
    • 清空lt

    5.3.2 答案

    • lt = []
    • lt += [1,2,3,4,5]
    • lt[2] = 6
    • lt.insert(2, 7)
    • del lt[1]
    • del lt[1:4]
    • 0 in lt
    • lt.append(0)
    • lt.index(0)
    • len(lt)
    • max(lt)
    • lt.clear()

    六、序列类型应用场景

    数据表示:元组 和 列表

    • 元组用于元素不改变的应用场景,更多用于固定搭配场景
    • 列表更加灵活,它是最常用的序列类型
    • 最主要作用:表示一组有序数据,进而操作它们

    6.1 元素遍历

    for item in ls/tp :
        <语句块>
    

    6.2 数据保护

    • 如果不希望数据被程序所改变,转换成元组类型
    ls = ["cat", "dog", "tiger", 1024]
    lt = tuple(ls)
    lt
    
    ('cat', 'dog', 'tiger', 1024)
    

    七、单元小结

    • 序列是基类类型,扩展类型包括:字符串、元组和列表
    • 元组用()和tuple()创建,列表用[]和set()创建
    • 元组操作与序列操作基本相同
    • 列表操作在序列操作基础上,增加了更多的灵活性
  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11200518.html
Copyright © 2011-2022 走看看