课时5:修改列表

简介: 本文介绍Python语言中修改列表元素的方法,主要包括两种操作方式:通过索引和切片修改列表。首先,使用索引可以单独修改列表中的某个元素,例如将“孙悟空”改为“sunwukong”。其次,通过切片可以批量修改多个元素,如将前两个元素替换为“牛魔王”和“红孩儿”。此外,还介绍了如何使用`del`语句删除元素以及通过切片指定范围进行删除。所有这些操作仅适用于可变序列,对于不可变序列(如字符串),需要先转换为列表才能进行修改。

修改列表

 

摘要:本文为 Python 语言基础中修改列表元素的方法操作

1.用索引修改列表的方法操作

2.用切片修改列表的方法操作

 

1.1 用索引修改列表的方法操作

上节课在序列里讲到:列表在序列里是可变序列,接下来创建一个名称为“04修改元素.py”,然后把上节课的列表案例移过来删除末尾的内容,示例如下:

#创建一个列表
stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]

image.png

接下来结合上述列表讲解修改列表中的元素,可以直接通过索引来修改,例如修改“孙悟空”这个元素,在上面的列表中“孙悟空”的索引是 0 ,然后将“孙悟空”改为“sunwukong”示例如下:

#创建一个列表
stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]
#修改列表中的元素
#直接通过索引来修改元索
stus[0]=’sunwukong’
print(stus)

image.png

执行结果:

image.png

从以上示例可以看出成功将“孙悟空”改写为“sunwukong”。

接下来在改写的代码前输出一下,然后在改写后输出一下,有更直观的感受,示例如下:

#创建一个列表
stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]
print("修改前:",stus)
#修改列表中的元素
#直接通过索引来修改元索
stus[0]=’sunwukong’
print('修改后:',stus)

image.png

执行结果:

image.png

示例中没有去改变量,而通过索引改 Stus 对象列表里的元素值,接下来在尝试改一下“沙和尚”改为“哈哈”示例如下:

#创建一个列表
stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]
print("修改前:",stus)
#修改列表中的元素
#直接通过索引来修改元索
stus[0]=’sunwukong’
stus[2]=’哈哈’
print('修改后:',stus)

image.png

执行结果:

image.png

从示例中可以看出已经成功将“沙和尚”改为“哈哈”,然后讲一下如何删除元素,在列表中是通过 Del 来实现删除元素的,接下来尝试删除“哈哈”这个元素,从修改后的Stus 这个列表中可以知道“哈哈”的索引为2那就需要删除索引为2的元素,操作如下:

#创建一个列表
stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]
print("修改前:",stus)
#修改列表中的元素
#直接通过索引来修改元索
stus[0]=’sunwukong’
stus[2]=’哈哈’
# 通过del来删除元素
del stus[2]   #删除索引为2的元素
print('修改后:',stus)

image.png

执行结果:

image.png

以上的操作都是通过索引来实现对列表的修改和删除的操作。

 

1.2 用切片修改列表的方法操作

接下来将通过切片来修改列表,把上面的列表 Stus 复制过来,修改前两个元素的值,然后测试切片的操作,示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
#通过切片来修改列表
stus[0:2]=’swk’
print(‘修改后:’stus)

image.png

执行结果:

image.png

以上示例是由切片的方法并且用字符串而字符串里是三个字符从而展示的效果,由于字符串也是一种序列所以会呈现以上效果。接下来改为123来测试如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
#通过切片来修改列表
stus[0:2]=123
print(‘修改后:’stus)

image.png

执行结果:

image.png

从测试中的显示效果来看是报错了,这是因为在切片进行赋值时,只能使用序列, 切片返回的就是序列,例如上面的“swk”这个字符串就是序列,在呈现传输中“swk”时分别传输的‘s‘,’w‘,’k‘,如下图:

image.png

接下来通过切片赋值的方法来给修改前列表中的前两个元素也就是“孙悟空”和“猪八戒”修改为“牛魔王”和“红孩儿”,示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
#通过切片来修改列表
stus[0:2]=['牛魔王',’红孩儿’]
print(‘修改后:’stus)


image.png

执行结果:

image.png

从上面来看2个元素换2元素,但其实还可以增加到3、4、5等等都可以。示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
#通过切片来修改列表
stus[0:2]=['牛魔王',’红孩儿’,’二郎神’]
print(‘修改后:’stus)


image.png

执行结果:

image.png

由于切片的是包含开始不包含结束,那接下来设置为索引0到0是效果如何?测试如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
#通过切片来修改列表
stus[0:0]=['牛魔王’]
print(‘修改后:’stus)

image.png

image.png

从示例可以看出牛魔王到了孙悟空之前了,因为这样设置是向索引为0的位置插入元素,之前上两示例是使用新的元素替换旧的元素。

还有一中情况是用步长来替换元素,接下来通过 Stus 列表使用步长来间隔取元素,示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
print(stus[::2])
print(‘修改后:’stus)

image.png

执行结果:

image.png

示例中间隔取出3个元素,分别是’孙悟空','沙和尚','蜘蛛精',那接下来尝试用一个’牛魔王’来代替三个元素行不行?示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
stus[::2]=['牛魔王’]
print(‘修改后:’stus)

image.png

image.png

从示例中报错来看在用步长时选取多个元素不能用一个或者不对等的元素来替换,所以当设置了步长时,序列中元素的个数必须和切片中元素的个数一致。示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
stus[::2]=['牛魔王',’红孩儿’,’二郎神’]
print(‘修改后:’stus)

image.png

image.png

接下来讲通过切片删除元素,还可以使用 Del 来删除,然后通过示例来删除前两元素,如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
del stus[0:2]
print(‘修改后:’stus)

image.png

image.png

然后还可以用步长的方法间隔删除,示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
del stus[::2]
print(‘修改后:’stus)

image.png

image.png

然后还可以直接通过切片选定范围后定义一个空列表(序列)内容来删除,示例如下:

stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’]
print("修改前:",stus)
stus[1:3]=[]
print(‘修改后:’stus)

image.png

image.png

以上操作,只适用于可变序列,不可变序列,无法通过索引来修改,示例如下:

#以上操作,只适用于可变序列
s ='hello
s[1]='a'
print(s[::2])

image.png

image.png

对于这种情况可以通过 List()函数将其他的序列转换为list,

示例如下:

s ='hello
s=list(s)
print(s)

image.png

image.png

从示例来看s已经变为一个列表,但是已经不是字符串了。hello分布别变为元素。

以上是通过索引来修改列表对象的内容。

 

 

 

 

相关文章
|
缓存 监控 Kubernetes
Spring Cloud 微服务集群 Monitor 监控中心| 学习笔记
快速学习 Spring Cloud 微服务集群 Monitor 监控中心。
 Spring Cloud 微服务集群 Monitor 监控中心| 学习笔记
|
6月前
|
机器学习/深度学习 传感器 算法
基于多模态感知与深度学习的智能决策体系
本系统采用“端-边-云”协同架构,涵盖感知层、计算层和决策层。感知层包括视觉感知单元(800万像素摄像头、UWB定位)和环境传感单元(毫米波雷达、TOF传感器)。边缘侧使用NVIDIA Jetson AGX Orin模组处理多路视频流,云端基于微服务架构实现智能调度与预测。核心算法涵盖人员行为分析、环境质量评估及路径优化,采用DeepSORT改进版、HRNet-W48等技术,实现高精度识别与优化。关键技术突破包括跨摄像头协同跟踪、小样本迁移学习及实时推理优化。实测数据显示,在18万㎡商业体中,垃圾溢流检出率达98.7%,日均处理数据量达4.2TB,显著提升效能并降低运营成本。
344 7
|
网络协议
深入解析:TCP四次挥手断开连接的全过程及必要性
在网络通信中,TCP(传输控制协议)以其可靠性和顺序保证而闻名。然而,TCP连接的建立和终止同样重要,它们确保了网络资源的有效管理和数据传输的完整性。本文将详细描述TCP连接的四次挥手过程,并探讨为何需要四次挥手来正确终止一个TCP连接。
404 2
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
484 0
|
存储 负载均衡 关系型数据库
|
安全 Oracle Java
oracle 11g 11204补丁信息
11204补丁信息
1207 1
|
机器学习/深度学习 人工智能 安全
如何建设一支高效的人工智能团队
如何建设一支高效的人工智能团队
1331 0
如何建设一支高效的人工智能团队
|
消息中间件 安全 Kafka
如何为Kafka加上账号密码(二)
本小节我们就为Kafka添加最简单的认证方式,也就是SASL_PLAINTEXT(即SASL/PLAIN+ 非加密通道)。
1829 5
使用队列解决高并发下使用Client对象调用webService接口
使用队列解决高并发下使用Client对象调用webService接口