序列(包括字符串,元组,列表类型)
-
序列是一维元素所组成的向量,元素的类型可以不同
-
序列指的是一块可以存放多个值的连续内存空间,可以通过每个值所在位置的编号(索引)来进行访问,类似于数学中的序列:\(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)