2020-11-24

本文详细介绍了Python中的序列结构,重点讲解了列表和元组的创建、访问、操作及区别。列表是可变序列,支持添加、修改和删除元素,而元组是不可变序列。理解两者在性能和使用场景上的差异对于优化Python代码至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三次

python  列表与元组

在数学里,序列也称为数列,是指按照一定顺序排列的一列数,而在程序设计中,序列是一种常用的数据存储方式,几乎每种程序设计语言都提供了类似的数据结构,如C语言或Java中的数组等。

在Python中,序列是最基本的数据结构。它是一块用于存放多个值的连续内存空间。Python中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。

通过阅读本文,您可以

了解什么是序列

序列的基本操作

列表及二维列表的基本操作

列表推导式的应用

元组的基本操作

元组推导式的应用

元组和列表的区别


目录

 

python  列表与元组

             序列概述

切片

计算序列的长度、最大值和最小值

    列表的创建和删除


序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列,每个值(称为元素)都分配一个数字,称为索引或位置。通过该索引可以取出相应的值。例如,我们可以把一家酒店看作一个序列,那么酒店里的每个房间都可以看作是这个序列的元素。而房间号就相当于索引,可以通过房间号找到对应的房间。

在Python中,序列结构主要有列表、元组、集合、字典和字符串。对于这些序列结构有以下几个通用的操作。其中,集合和字典不支持索引、切片、相加和相乘操作。

索引

  序列中的每个元素都有一个编号,也称为索引(Indexing)。这个索引是从0开始递增的,即下标为0表示第一个元素,下标为1表示第二个元素,依此类推,

 Python比较神奇,它的索引可以是负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是−1,倒数第二个元素的索引值为−2,依此类推,

注意

在采用负数作为索引值时,是从−1开始的,而不是从0开始的,即最后一个元素的下标为−1,这是为了防止与第一个元素重合。

通过索引可以访问序列中的任何元素。例如,定义一个包括4个元素的列表,要访问它的第三个元素和最后一个元素,可以使用下面的代码。 

  晴空一鹤排云上

 

  •   切片

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

   sname[start : end : step]
sname:表示序列的名称; 
start:表示切片的开始位置(包括该位置),如果不指定,则默认为0;
end:表示切片的截止位置(不包括该位置),如果不指定,则默认为序列的长度;
step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

 在进行切片操作时,如果指定了步长,那么将按照该步长遍历序列的元素,否则将一个一个遍历序列。

 序列相加

在Python中,支持两种相同类型的序列相加(adding)操作。即将两个序列进行连接,不会去除重复的元素,使用加(+)运算符实现。

将两个列表相加,可以使用下面的代码。

运行上面的代码,将输出以下内容: 

 ['自古逢秋悲寂寥', '我言秋日胜春朝', '晴空一鹤排云上', '便引诗情到碧霄', '青青园中葵', '朝露待日晞', '阳春布德泽',
    '万物生光辉', '常恐秋节至', '焜黄华叶衰', '百川东到海', '何时复西归', '少壮不努力', '老大徒伤悲']

在进行序列相加时,相同类型的序列是指,同为列表、元组、字符串等,序列中的元素类型可以不同。

  • 计算序列的长度、最大值和最小值

在Python中,提供了内置函数计算序列的长度、最大值和最小值。分别是:使用len()函数计算序列的长度,即返回序列包含多少个元素;使用max()函数返回序列中的最大元素;使用min()函数返回序列中的最小元素。

例如,定义一个包括9个元素的列表,并通过min()函数计算列表的最小元素,可以使用下面的代码。

01  num = [7,14,21,28,35,42,49,56,63]
02  print("序列",num,"中最小值为",min(num))

运行上面的代码,将显示以下结果。
    序列 [7, 14, 21, 28, 35, 42, 49, 56, 63] 中最小值为 7 

Python提供的内置函数及其说明

列表的创建和删除

在Python中提供了多种创建列表的方法

  • 使用赋值运算符直接创建列表

同其他类型的Python变量一样,创建列表时,也可以使用赋值运算符“=”直接将一个列表赋值给变量。

01  num = [7,14,21,28,35,42,49,56,63]
02  verse = ["自古逢秋悲寂寥","我言秋日胜春朝","晴空一鹤排云上","便引诗情到碧霄"]
03  untitle = ['Python',28,"人生苦短,我用Python",["爬虫","自动化运维","云计算","Web开发"]]
04  python = ['优雅',"明确",'''简单''']

在使用列表时,虽然可以将不同类型的数据放入同一个列表中,但是通常情况下,我们不这样做,而是在一个列表中只放入一种类型的数据。这样可以提高程序的可读性。

创建空列表

在Python中,也可以创建空列表, 

  emptylist = []

创建数值列表

在Python中,可以使用list()函数直接将range()函数循环出来的结果转换为列表。

list()函数的基本语法如下:

 list(data)

其中,data表示可以转换为列表的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据。

创建一个10~20(不包括20)中所有偶数的列表,可以使用下面的代码。

  list(range(10, 20, 2))

删除列表 对于已经创建的列表,不再使用时,可以使用del语句将其删除。

 del listname

访问列表元素

 如果想将列表的内容输出也比较简单,可以直接使用print()函数。

列 输出每日一帖。 

 在上面的代码中,datetime.datetime.now()方法用于获取当前日期,而weekday()方法则是从日期时间对象中获取星期,其值为0~6中的一个,为0时代表星期一,为1时代表星期二,依此类推,为6时代表星期日。

 添加、修改和删除列表元素

添加元素时,使用列表对象的append()方法实现,列表对象的append()方法用于在列表的末尾追加元素,

  listname.append(obj)

列 定义一个包括4个元素的列表,然后应用append()方法向该列表的末尾再添加一个元素,

 

修改元素

修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。

01  verse = ["长亭外","古道边","芳草碧连天"]
02  print(verse)
03  verse[2] = "一行白鹭上青天"    # 修改列表的第3个元素
04  print(verse)

删除元素

 删除元素主要有两种情况,一种是根据索引删除,另一种是根据元素值进行删除。

根据索引删除 删除列表中的指定元素和删除列表类似,也可以使用del语句实现。所不同的就是在指定列表名称时,换为列表元素。

01  verse = ["长亭外","古道边","芳草碧连天"]
02  del verse[-1]
03  print(verse)

根据元素值删除

如果想要删除一个不确定其位置的元素(即根据元素值删除),可以使用列表对象的remove()方法实现。例如,要删除列表中内容为“古道边”的元素,可以使用下面的代码。

01  verse = ["长亭外","古道边","芳草碧连天"]
02  verse.remove("古道边")

 

 

元组

元组(tuple)是Python中另一个重要的序列结构,与列表类似,也是由一系列按特定顺序排列的元素组成。但是它是不可变序列。因此,元组也可以称为不可变的列表。在形式上,元组的所有元素都放在一对小括号“()”中,两个相邻元素间使用逗号“,”分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入元组中,并且同一个元组中,元素的类型可以不同,因为它们之间没有任何关系。通常情况下,元组用于保存程序中不可修改的内容。

从元组和列表的定义上看,这两种结构比较相似,那么它们之间有哪些区别呢?它们之间的主要区别就是一个是不可变序列,一个是可变序列。即元组中的元素不可以单独修改,而列表则可以任意修改。

元组的创建和删除

使用赋值运算符直接创建元组

同其他类型的Python变量一样,创建元组时,也可以使用赋值运算符“=”直接将一个元组赋值给变量

01  num = (7,14,21,28,35,42,49,56,63)
02  ukguzheng = ("渔舟唱晚","高山流水","出水莲","汉宫秋月")
03  untitle = ('Python',28,("人生苦短","我用Python"),["爬虫","自动化运维","云计算","Web开发"])
04  python = ('优雅',"明确",'''简单''')

在Python中,虽然元组是使用一对小括号将所有的元素括起来。但是实际上,小括号并不是必需的,只要将一组值用逗号分隔开来,Python就可以认为它是元组。

    ukguzheng = "渔舟唱晚","高山流水","出水莲","汉宫秋月"

创建空元组

   emptytuple = ()

空元组可以应用在为函数传递一个空值或者返回空值时。例如,定义一个函数必须传递一个元组类型的值,而我们还不想为它传递一组数据,那么就可以创建一个空元组传递给它。

删除元组

对于已经创建的元组,不再使用时,可以使用del语句将其删除。

访问元组元素

 ('Python', 28, ('人生苦短', '我用Python'), ['爬虫', '自动化运维', '云计算', 'Web开发'])

从上面的执行结果中可以看出,在输出元组时,是包括左右两侧的小括号的。如果不想输出全部元素,也可以通过元组的索引

 

元组与列表的区别

元组和列表都属于序列,而且它们又都可以按照特定顺序存放一组元素,类型又不受限制,只要是Python支持的类型都可以。那么它们之间有什么区别呢?

简单理解:列表类似于我们用铅笔在纸上写下自己喜欢的歌曲,写错了还可以擦掉。而元组则类似于用钢笔写下的歌曲名字,写上了就擦不掉了,除非换一张纸重写。

列表和元组的区别主要体现在以下5个方面。

(1)列表属于可变序列,它的元素可以随时修改或者删除,而元组属于不可变序列,其中的元素不可以修改,除非整体替换。

(2)列表可以使用append()、extend()、insert()、remove()和pop()等方法实现添加和修改列表元素,而元组则没有这几个方法,因为不能向元组中添加和修改元素。同样,也不能删除元素。

(3)列表可以使用切片访问和修改列表中的元素。元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。

(4)元组比列表的访问和处理速度快。所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。

(5)列表不能作为字典的键,而元组可以。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值