序列(包括字符串,元组,列表类型)

  • 序列是一维元素所组成的向量,元素的类型可以不同

  • 序列指的是一块可以存放多个值的连续内存空间,可以通过每个值所在位置的编号(索引)来进行访问,类似于数学中的序列:\(S_{0},S_{1},S_{2},S_{3},......S_{n-1}\)

  • 序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作

序列索引

索引值(序号)可以为正数也可以为负数

序列类型的通用操作符

操作符 作用
x in S 若x是S中的元素,返回True,否则返回False
x not in S 若x是S中的元素,返回False,否则返回True
s + t 连接s和t两个序列
s * n 或者 n * s 将序列S复制n次
s[i] 返回S中的第i个元素
len(S) 返回序列s的长度
min(S) s中元素可比较时,返回序列s的最小值
max(S) s中元素可比较时,返回序列s的最大值
s.index(x) 返回序列s中第一次出现元素x的位置
s.index(x,i,j) 返回序列s中从i到j位置中第一次出现元素x的位置
s.count(x) 返回序列s中出现x的总次数

序列切片

切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。

序列实现切片操作的语法格式如下:

序列名称[索引开始位置 : 索引结束位置 : 步长]
  • 开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
  • 结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
  • 步长表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素;
  • 如果省略设置 步长的值,则最后一个冒号就可以省略。
序列切片:
str="ABCDEF"
#取索引区间为[0,2]之间(不包括索引2处的字符)的字符串
print(str[:2])
#隔 1 个字符取一个字符,区间是整个字符串
print(str[::2])
#取整个字符串,此时 [] 中只需一个冒号即可
print(str[:])
#逆向索引
print(str[::-1])

元组

元组是一种序列类型,一旦创建就不能被修改

元组的创建

  • 可以使用小括号(),或者tuple()创建,也可以不使用小括号,元素之间用逗号,分隔

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

  • 元组类型创建之后就不能修改,因此没有特殊操作

    #元组类型的创建
    
    C1="ABC","DEF","GHI"
    C1
    
    ('ABC', 'DEF', 'GHI')
    
    C2=(123,0x001100,"JKL",C1)
    C2
    
    (123, 4352, 'JKL', ('ABC', 'DEF', 'GHI'))
    
    #元组类型的操作
    
    C3="ABC","DEF","GHI"
    C4=C3[::-1]
    C4
    
    ('GHI', 'DEF', 'ABC')
    
    C5=(123,0x001100,"JKL",C3)
    
    C5
    
    (123, 4352, 'JKL', ('ABC', 'DEF', 'GHI'))
    
    C5[-1]
    
    ('ABC', 'DEF', 'GHI')
    
    C5[-1][2]
    
    'GHI'
    

列表类型

  • 列表类型是一种序列类型,创建后可以被随意修改
  • 列表类型使用方括号[ ]或者list()创建,元素之间用逗号分隔
  • 列表类型各个元素之间类型可以不同,没有长度限制
#列表类型的定义
ls=["cat","dog","tiger",1024]
ls
['cat', 'dog', 'tiger', 1024]
lt=ls
lt
['cat', 'dog', 'tiger', 1024]
 #在创建一个列表时,使用方括号[]或者list()来创建时,才是真正的创建了一个列表,如上面的ls
 #如果仅仅是使用赋值,而没有使用方括号或者list(),那么就只是将一个列表赋给了一个新的名字,如  #上面的lt

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

函数和方法 作用
ls[i]=x 替换列表ls第i元素为x
ls[i:j:k]=lt 用列表lt替换ls切片后所形成的对应元素组成的子列表
del ls[i] 删除列表中第i元素
del ls[i:j:k] 删除列表ls中从第i到第j以步长k所选中的元素
ls+=lt或者·ls=ls+lt 将列表lt中的元素增加到列表ls中
ls*=lt 将列表ls元素重复复制n次
ls=["cat","dog","tiger",1024]
ls[1:2]=[1,2,3,4]  #用1,2,3,4替换ls中的第一个元素
ls
['cat', 1, 2, 3, 4, 'tiger', 1024]
del ls[::3]   #以步长为3删除元素
ls
[1, 2, 4, 'tiger']
ls*2
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
函数或者方法 作用以及描述
ls.append(x) 在列表ls最后增加一个元素
ls.clear() 删除列表ls中的所有元素
ls.copy() 生成一个新列表,复制ls中的所有元素
ls.insert(i,x) 在列表ls的第i位置增加元素x
ls.pop(i) 取出列表ls的第i位置元素并删除
ls.remove(x) 删除列表ls中的第一个元素
ls.reverse() 将列表ls中的元素反转
#列表类型的操作
ls=["cat","dog","tiger",1024]
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']

序列类型的操作举例:

#列表功能
#定义一个空的列表
lt=[]
#向列表中增加5个元素
lt+=[1,2,3,4,5]
lt
[1, 2, 3, 4, 5]
#修改列表中的第2个元素
lt[2]=6
lt
[1, 2, 6, 4, 5]
#向lt中的第2位置增加一个元素
lt.insert(2,7)
lt
[1, 2, 7, 6, 4, 5]
#删除列表中第1个位置的元素
del lt[1]
lt
[1, 7, 6, 4, 5]
#删除列表中第1~3位置的元素
del lt[1:4]
lt
[1, 5]
#判断列表中是否包含数字0
0 in lt
False
#向lt中新增数字0
lt.append(0)
lt
[1, 5, 0]
#返回数字0在lt中的索引
lt.index(0)
2
#返回lt的长度
len(lt)
3
#返回lt中的最大元素
max(lt)
5
#清空lt
lt.clear()
lt
[]

序列类型的应用:

元素遍历:

#元素遍历
for item in ls:
    <语句块>

数据保护:

将不希望被程序所改变的数据转换成元组类型

#数据保护
ls=["cat","dog","tiger",1024]
lt=tuple(ls)
lt
('cat', 'dog', 'tiger', 1024)