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

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

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

修改列表

一、通过索引来修改

修改元素

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

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

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

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

del stus[2]  #删除索引为2的元素

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

二、通过切片来修改列表

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

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

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

stus[0:2] =123

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

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

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

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

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

stus[0:2] = ['牛魔王','红孩儿','二郎神']

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

接下来再看一种情况:

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

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

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

stus[::2] = ['牛魔王']

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

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

stus[::2] = ['牛魔王','红孩儿','二郎神']

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

通过切片来删除元素

del stus[0:2]

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

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

del stus[::2]

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

还有一种用法:

stus[1:3] = []

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

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

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

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

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

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

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

相关文章
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
10天前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
20 2
|
16天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
28天前
|
索引 Python
Python列表
Python列表。
48 8
|
30天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
35 9
|
1月前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
65 14
|
1月前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
83 10
|
1月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
44 7
|
3月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
55 0
|
3月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
46 0