三、Python语法基础---序列、列表、元组

1.序列

序列是一块用于多个值的连续内存空间,并且按一定顺序排列,每一个值(称为元素)都分配一个数字。

  • 索引

    序列中的每个元素都有一个编号,也称为索引。索引是从 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循环中

2.列表

列表的所有元素都放在一对中括号“[]”中,两个相邻元素同使用逗号“,”分隔(必须是英文符号)。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入列表中,并且同一个列表中,元素的类型可以不同。

  • 列表的创建和删除

     # 列表的创建
     # 第一种:使用赋值运算符直接创建列表,并使用"[]"将所有的元素括起来
     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
  • 添加、修改和删除列表元素
  1. 添加元素
    添加列表元素时,使用列表对象的append()方法实现。该方法用于在列表的末尾追加元素。
    语法格式:
# obj: 表示要添加到列表末尾的对象
listname.append(obj)

列表对象除了提供append()方法,还提供了insert()方法,该方法用于向列表的指定位置插入元素。但insert()方法的执行效率没有append()方法高。
语法格式:

# index: 用于指定要插入的索引位置
# obj: 表示要添加的列表对象
listname.insert(index,obj)

append()方法、insert()方法都是向列表中添加一个元素,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法实现。
语法格式:

# listname: 表示元列表
# seq: 表示要追加的列表
listname.extend(seq)
  1. 修改元素
    修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。
  2. 删除元素
    删除元素主要有两种情况,一张是根据索引删除,另一种是根据元素进行删除。
# 根据索引删除元素,可以使用del语句实现,也可以使用pop()方法实现指定索引删除元素
# index: 表示索引位置
del listname[index]
listname.pop(index)

# 根据元素值删除,可以使用列表对象的remove()方法实现。在使用该方法之前最好先判断该元素值是的存在,若指定的元素不存在,则报异常
# value: 表示元素值
listname.remove(value)
  • 对列表进行统计和计算
  1. 获取指定元素出现的次数
    使用列表对象的count()方法可以获取指定元素在列表种的出现次数.
    语法格式:
# listname: 表示列表的名称
# obj: 表示要判断是否存在的对象,这里只能进行精确匹配,即不能是元素值的一部分
# 返回值: int类型 元素在列表种出现的次数
listname.count(obj)
  1. 获取指定元素首次出现的下标
    使用列表对象的index()方法可以获取指定元素在列表中首次出现的位置(即索引)。
    语法格式:
# listname: 表示列表的名称
# obj: 表示要查找的对象,这里只能进行精确匹配。如果指定的对象不存在时,则抛出异常
# 返回值: 首次出现的索引值
listname.index(obj)
  1. 统计数值列表的元素和
# sum()函数用于统计数值列表中各元素的和
# iterable: 表示要统计的列表
# start: 表示统计结果是从那个数开始(即将统计结果上start所指定的数),是可选参数,默认值为 0 
sum(iterable[, start])
  • 对列表进行排序
  1. 使用列表对象的sort()方法
    sort()方法用于对原列表中的元素进行排序,排序后的元素顺序将发生改变。
    语法格式:
# listname: 表示要进行排序的列表
# key: 表示指定从每个元素中提取一个用于比较的键(如:设置"key=str.lower"表示在排序时不区分字母大小写
# reverse: 可选参数,如果将该值指定为True,则表示降序排列;如果为False,则表示升序排列。默认为升序排列
listname.sort(key=None, reverse=False)

该sort()方法对列表进行排序时,对中文支持不好,如需实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。

  1. 使用内置的sorted()函数实现
    在Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。
    语法格式:
# iterable: 表示要进行排序的列表名称
# key: 表示指定从每个元素中提取一个用于比较的键(如:设置"key=str.lower"表示在排序时不区分字母大小写
# reverse: 可选参数,如果将该值指定为True,则表示降序排列;如果为False,则表示升序排列。默认为升序排列
sorted(iterable, key=None, reverse=False)

列表对象的sort()方法和内置sorted()函数的作业基本相同;不同点时在使用sort()方法时,会改变原列表的元素排序顺序,而使用sorted()函数时,会建立一个原列表的副本,该副本为排序后的列表。

  • 列表推导式
    使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。
  1. 生成指定范围的数值列表
    语法格式:
'''
list: 表示生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 循环变量
range: 采用range()函数生成的range对象
'''
list = [Expression for var in range]
  1. 根据列表生成指定需求的列表
    语法格式:
'''
newlist: 表示新生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 变量,值为后面列表的每个元素
list: 用于生成新列表的原列表
'''
newlist = [Expression for var in list]
  1. 从列表中选择符合条件的元素组成新的列表
    语法格式:
'''
newlist: 表示新生成的列表名称
Expression: 表达式,用于计算列表的元素
var: 变量,值为后面列表的每个元素
list: 用于生成新列表的原列表
condition: 条件表达式,用于指定筛选条件
'''
newlist = [Expression for var in list if condition]
  • 二维列表的使用
    二维列表中的信息以行和列的形式表示,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
    创建二维列表常用的三种方法:
  1. 直接定义二维列表
    在Python中,二维列表是包含列表的列表,即一个列表的每个元素又都是一个列表。
    语法格式:
'''
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]]
  1. 使用嵌套的for循环创建
    for循环相互嵌套,从而实现二维列表的创建
  2. 使用列表推导式创建
    使用列表推导式创建二维列表,这种方法比较简洁。
# 例如:创建一个包含4行5列的二维列表
arr = [[j for j in range(5)] for i in range(4)]

若想访问二维列表中的元素,语法格式:

'''
listname: 列表名称
下标1: 表示列表中第几行,下标值从0开始,即第一行的下标为0
下标2: 表示列表中第几列,下标值从0开始,即第一列的下标为0
'''
listname[下标1][下标2]

3.元组

  • 元组的创建和删除
  1. 使用赋值运算符直接创建元组

     # 第一种:使用赋值运算符直接创建元组,并使用"()"将所有的元素括起来
     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()函数。

4.元组和列表的区别

  1. 列表属于可变序列,它的元素可以随时修改或者删除;元组属于不可变序列,其中的元素不可以修改,除非整体替换。
  2. 列表可以使用append()、extend()、remove()和pop()等方法实现添加和修改列表元素;而元组没有这几个方法,所以不能向元组中添加和修改元素。同意,元组也不能删除元素。
  3. 列表可以使用切片访问和修改列表中的元素;元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。
  4. 元组比列表的访问和处理速度快,所以当只是需要对其中的元素进行访问,而不进行任何修改时,建议使用元组。
  5. 列表不能作为字典的键,而元组则可以。

你可能感兴趣的:(python,python)