列表的修改 | Python从入门到精通:进阶篇之四

简介: 本文介绍了如何通过索引和切片两种方式对列表进行修改和删除的操作。

列表的通用操作 | Python从入门到精通:进阶篇之三

修改列表

一、通过索引来修改

修改元素

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

程序执行结果为:
image.png
可以看到第一个元素被修改了。

之前我们说过对于不可变对象可以通过改变量、给变量重新赋值的方式来修改,但是注意并没有改变对象本身,在这里也是通过索引修改了里面的元素,也就是说这个变量没有变,我们只是修改了这个量的值。

通过del来删除元素
如果我们想删除一个变量,可以通过del来实现,比如要删除索引为2的变量,可添加如下代码:

del stus[2]  #删除索引为2的元素
AI 代码解读

执行结果为:
image.png
可以看到“沙和尚”这个元素就不见了。

二、通过切片来修改列表

#创建一个列表
stus = 
['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
print("修改前:",stus)
 #通过切片来修改列表中的元素
 stus[0:2] = ['swk']
 print('修改后:',stus)
AI 代码解读

执行结果为:
image.png
可以看到在这里“孙悟空”和“猪八戒”就变成了swk。

但是因为字符串本身也是一种序列,所以看不到明显的效果,我们使用数字来试试!

stus[0:2] =123
AI 代码解读

执行结果为:
image.png
可以看到,程序报错了。这是因为我们在给切片赋值的时候必须传递一个序列。切片返回的就是一个序列,所以我们必须赋值给它一个序列去替换原本的序列。

所以正确的赋值方式展示如下:

#使用新的元素替换旧元素
stus[0:2] = ['牛魔王','红孩儿'] 
AI 代码解读

执行结果为:
image.png
可以看到“孙悟空”和“猪八戒”就被替换掉了。

思考: 如果我们传递了多个元素呢?

stus[0:2] = ['牛魔王','红孩儿','二郎神']
AI 代码解读

执行结果为:
image.png
可以看到“孙悟空”和“猪八戒”被这三个元素给替换了。

接下来再看一种情况:

stus[0:0] = ['牛魔王']  #向索引为0的位置插入元素
AI 代码解读

首先来回忆一下,切片包括的范围是包括开始不包括结束位置。那这里的“0:0”不包括任何元素。
执行结果为:
image.png
可以看到“牛魔王”在“孙悟空”的前面,代表在索引为0的位置插入元素。可以采用这种写法。

接下来再介绍一种有步长的:

stus[::2] = ['牛魔王']
AI 代码解读

执行结果为:
image.png
可以看到,程序报错了。人家想要的是三个元素,你却只给了一个元素。

这里要注意:当设置了步长时,序列中元素的个数必须和切片中元素的个数一致。
重新设置下:

stus[::2] = ['牛魔王','红孩儿','二郎神']
AI 代码解读

执行结果为:
image.png
可以看到从开始位置每隔步长为2的位置替换了新的元素。

通过切片来删除元素

del stus[0:2]
AI 代码解读

执行结果为:
image.png
可以看到前两个元素就被删掉了。

还可以选择有步长的切片。

del stus[::2]
AI 代码解读

执行结果为:
image.png
可以看到,切片位置的元素就被删除了。

还有一种用法:

stus[1:3] = []
AI 代码解读

执行结果为:
image.png
可以看到,从索引1位置到3位置的元素就被删除了。

以上山寨版红方式都可以进行删除,使用del或者赋值为空都是可以的。

但是注意以上操作,只适用于可变序列。下面举例子说明:

s = 'hello' 
s[1] = 'a' #不可变序列,无法通过索引来修改
#这种写法代码会报错
AI 代码解读

但是可以通过 list() 函数将其他的序列转换为list:

s = 'hello' 
s = list(s)
print(s)
AI 代码解读

执行结果为:
image.png
可以看到这样是可以进行修改的,但此时它已经不是一个字符串了。

目录
打赏
0
0
0
0
189
分享
相关文章
|
24天前
|
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
133 80
Python列表推导式:简洁高效的数据处理利器
Python列表推导式:简洁高效的数据处理利器
144 80
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
49 5
深入浅出:拼多多商品列表API接口Python攻略
拼多多是中国领先的社交电商平台,为开发者提供了丰富的API接口,用于集成商品数据到第三方应用。通过Python可以轻松调用这些API获取商品列表。主要步骤包括:1) 安装必要库(如`requests`);2) 使用AppKey和AppSecret获取访问令牌;3) 调用商品列表API,传入参数如商品ID、页码等;4) 解析返回的JSON数据提取所需信息。按照此流程,开发者能够快速实现与拼多多平台的数据交互。
Python与MongoDB的亲密接触:从入门到实战的代码指南
本文详细介绍了Python与MongoDB结合使用的实战技巧,涵盖环境搭建、连接管理、CRUD操作、高级查询、索引优化、事务处理及性能调优等内容。通过15个代码片段,从基础到进阶逐步解析,帮助开发者掌握这对黄金组合的核心技能。内容包括文档结构设计、批量操作优化、聚合管道应用等实用场景,适合希望高效处理非结构化数据的开发者学习参考。
71 0
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
183 10
如何将Python元组转换为列表
本文介绍了在Python中将元组转换为列表的方法。通过内置的`list()`函数,可以轻松地将一个元组转换为列表。此外,文章还提供了如何使用列表推导式和`itertools.chain()`方法将包含多个元组的列表展平为单一列表的示例。这些方法对于数据处理和转换非常实用,能够帮助开发者高效操作序列类型数据。文中附有代码实例及输出结果,便于理解与实践。
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等