序列是一块用于多个值的连续内存空间,并且按一定顺序排列,每一个值(称为元素)都分配一个数字。
索引
序列中的每个元素都有一个编号,也称为索引。索引是从 0 开始递增的,即从左向右下标为 0 表示第一个元素,下标为 1 表示第 2 个元素,以此类推。
在python中,它的索引可以是负数。索引从 -1 开始,从右向左计数,也就是最后的一个元素开始技术,即最后一个元素的索引值是 -1,倒数第二个元素的索引值为 -2,以此类推。
切片
切片操作是访问序列中元素的另一种方法,切片可以访问一定范围的元素,也可以通过切片生成一个新的序列。
语法格式:
'''
sname: 表示序列的名称
start: 表示切片的开始位置(包括该位置),默认为0
end: 表示切片的截止位置(不包括该位置),默认为序列的长度
step: 表示切片的步长,默认为 1 ,当省略该步长时,最后一个冒号也可以省略
'''
sname[ start : end : step ]
在Python中,可以使用 in 关键字检查某个元素是否是序列的成员,即检查某个元素是否包含在某个序列中。
语法格式:
# value: 表示要查找的元素
# sequence: 表示序列
value in sequence
Python 提供的内置函数及其作用
函数 | 作用 |
---|---|
len() | 计算序列的长度,即返回序列包含多少个元素 |
max() | 返回序列中的最大元素 |
min() | 返回序列中的最小元素 |
list() | 将序列转换为列表 |
str() | 将序列转换为字符串 |
sum() | 计算元素和 |
sorted() | 对元素进行排序 |
reversed() | 反向序列中的元素 |
enumerate() | 将序列组合为一个索引序列,多用在for循环中 |
列表的所有元素都放在一对中括号“[]”中,两个相邻元素同使用逗号“,”分隔(必须是英文符号)。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入列表中,并且同一个列表中,元素的类型可以不同。
列表的创建和删除
# 列表的创建
# 第一种:使用赋值运算符直接创建列表,并使用"[]"将所有的元素括起来
list = [1, 2, 3, 4 ]
# 第二种:创建空列表
list = []
# 第三种:创建数值列表
# data 表示可以转换为列表的数据
list(data)
# 删除列表 del 表示将整个列表进行删除
# 注:在del删除列表前,一定要保证输入的列表名是已经存在的,否则程序报错:NoneEroor错误
del list
访问列表元素
可通过下标索引进行列表元素访问,还可以通过切片操作实现处理列表中的部分元素。
遍历列表
1.直接使用for循环实现
语法格式:
# item:用于保存获取到的元素值
# listname: 表示列表名称
for item in listname:
# 输出item
2.使用for循环和enumerate()函数实现
使用for循环和enumerate()函数可以实现同时输出索引值和元素内容。
语法格式:
# index: 用于保存元素的索引
# item: 用于保存获取到的元素值
# listname: 表示列表名称
for index,item in enumerate(listname):
# 输出index和item
# obj: 表示要添加到列表末尾的对象
listname.append(obj)
列表对象除了提供append()方法,还提供了insert()方法,该方法用于向列表的指定位置插入元素。但insert()方法的执行效率没有append()方法高。
语法格式:
# index: 用于指定要插入的索引位置
# obj: 表示要添加的列表对象
listname.insert(index,obj)
append()方法、insert()方法都是向列表中添加一个元素,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法实现。
语法格式:
# listname: 表示元列表
# seq: 表示要追加的列表
listname.extend(seq)
# 根据索引删除元素,可以使用del语句实现,也可以使用pop()方法实现指定索引删除元素
# index: 表示索引位置
del listname[index]
listname.pop(index)
# 根据元素值删除,可以使用列表对象的remove()方法实现。在使用该方法之前最好先判断该元素值是的存在,若指定的元素不存在,则报异常
# value: 表示元素值
listname.remove(value)
# listname: 表示列表的名称
# obj: 表示要判断是否存在的对象,这里只能进行精确匹配,即不能是元素值的一部分
# 返回值: int类型 元素在列表种出现的次数
listname.count(obj)
# listname: 表示列表的名称
# obj: 表示要查找的对象,这里只能进行精确匹配。如果指定的对象不存在时,则抛出异常
# 返回值: 首次出现的索引值
listname.index(obj)
# sum()函数用于统计数值列表中各元素的和
# iterable: 表示要统计的列表
# start: 表示统计结果是从那个数开始(即将统计结果上start所指定的数),是可选参数,默认值为 0
sum(iterable[, start])
# listname: 表示要进行排序的列表
# key: 表示指定从每个元素中提取一个用于比较的键(如:设置"key=str.lower"表示在排序时不区分字母大小写
# reverse: 可选参数,如果将该值指定为True,则表示降序排列;如果为False,则表示升序排列。默认为升序排列
listname.sort(key=None, reverse=False)
该sort()方法对列表进行排序时,对中文支持不好,如需实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。
# iterable: 表示要进行排序的列表名称
# key: 表示指定从每个元素中提取一个用于比较的键(如:设置"key=str.lower"表示在排序时不区分字母大小写
# reverse: 可选参数,如果将该值指定为True,则表示降序排列;如果为False,则表示升序排列。默认为升序排列
sorted(iterable, key=None, reverse=False)
列表对象的sort()方法和内置sorted()函数的作业基本相同;不同点时在使用sort()方法时,会改变原列表的元素排序顺序,而使用sorted()函数时,会建立一个原列表的副本,该副本为排序后的列表。
'''
list: 表示生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 循环变量
range: 采用range()函数生成的range对象
'''
list = [Expression for var in range]
'''
newlist: 表示新生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 变量,值为后面列表的每个元素
list: 用于生成新列表的原列表
'''
newlist = [Expression for var in list]
'''
newlist: 表示新生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 变量,值为后面列表的每个元素
list: 用于生成新列表的原列表
condition: 条件表达式,用于指定筛选条件
'''
newlist = [Expression for var in list if condition]
'''
listname: 表示生成的列表名称
[元素11,元素12,元素13,...,元素ln]: 表示二维列表的第一行,也是一个列表。其中"元素11,元素12,元素13,...,元素ln"代表第一行中的列。
[元素21,元素22,元素23,...,元素2n]: 表示二维列表的第二行
以此类推。
'''
listname = [[元素11,元素12,元素13,...,元素ln],
[元素21,元素22,元素23,...,元素2n],
...,
[元素n1,元素n2,元素n3,...,元素nn]]
# 例如:创建一个包含4行5列的二维列表
arr = [[j for j in range(5)] for i in range(4)]
若想访问二维列表中的元素,语法格式:
'''
listname: 列表名称
下标1: 表示列表中第几行,下标值从0开始,即第一行的下标为0
下标2: 表示列表中第几列,下标值从0开始,即第一列的下标为0
'''
listname[下标1][下标2]
使用赋值运算符直接创建元组
# 第一种:使用赋值运算符直接创建元组,并使用"()"将所有的元素括起来
tuplename = ("lisi", "wangwu", "zhangsan", "ranxi" )
# 第二种:"()"小括号可以省略,只要将一组值用逗号分隔开来
tuplename = "lisi", "wangwu", "zhangsan", "ranxi"
# 第三种:若想元组只包含一个元素,需要使用"()"将其括起来,并还需加上一个逗号,否则python将视为 str 字符串类型
tuplename = ("张三" , )
# 第四种:创建空元组
tuplename = ()
# 第五种:创建数值元组
# tuple()函数:使用该函数直接将range()函数循环出来的结果转换为数值元组
# data: 表示可以转换为元组的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据
tuple(data)
# 删除元组 使用del 语句将其删除
# 注:del语句在实际开发时,并不常用,因为Python自带的垃圾回收机制会自动销毁不同的元组,所以即使我们不手动将其删除,Python也会自动将其回收
del tuplename
访问元组元素
通过元组的所有获取指定的元素,也可以采用切片的方式获取指定的元素;也可使用enumerate()函数同时获取索引和元素。
修改元组元素
因为元组是不可变序列,所以我们不能对它的单个元素值进行修改,但可以对元组进行重新赋值。
还可以对元组使用"+"进行连接组合,进行连接组合的前提是:连接的内容必须都是元组,不能将元组和字符串或者列表进行连接。
元组推导式
元组推导式和列表推导式同理,只需将列表推导式中的"[]" 修改为"()"。
注:使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,这一点和列表推导式是不同。要使用该生成器对象可以将其转换为元组或者列表。其中,转换为元组使用 tuple()函数,而转换为列表则使用 list()函数。