列表的修改 | 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
可以看到这样是可以进行修改的,但此时它已经不是一个字符串了。

相关文章
|
6天前
|
Python
|
2天前
|
Python 容器
python 元组、列表解包
【7月更文挑战第1天】
8 1
|
6天前
|
自然语言处理 编译器 PHP
Python入门
【6月更文挑战第27天】Python入门。
12 3
|
7天前
|
存储 Python
Python中使用列表和字典来存储和处理复杂的数据结构
Python中使用列表和字典来存储和处理复杂的数据结构
|
5天前
|
存储 索引 Python
字符串、列表、元组、字典(python)
字符串、列表、元组、字典(python)
|
1天前
|
数据采集 Python
揭秘淘宝商品信息:Python爬虫技术入门与实战指南
Python爬虫用于获取淘宝商品详情,依赖`requests`和`beautifulsoup4`库。安装这两个库后,定义函数`get_taobao_product_details`,发送GET请求模拟浏览器,解析HTML获取标题和价格。注意选择器需随页面结构更新,遵守爬虫政策,控制请求频率,处理异常,且数据只能用于合法目的。
|
1天前
|
C++ Python
揭秘!Python高手都在用的数据类型秘籍,列表推导式让你告别繁琐循环
【7月更文挑战第2天】Python的列表推导式是高手必备技巧,它让复杂的循环简化为一行代码,提升代码的可读性和效率。例如,要计算数字列表的平方,传统循环需使用`for`和`append()`,而列表推导式只需`[number ** 2 for number in numbers]`。此外,它还能结合条件表达式,如筛选并平方偶数:`[number ** 2 for number in numbers if number % 2 == 0]`。学会列表推导式,让你的Python代码更优雅、更易维护。
|
6天前
|
Python
python3 入门学习笔记
python3 入门学习笔记
7 0
|
2月前
|
索引 Python 存储
Python 04 之变量【列表,元组,集合,字典,字符串】
Python 04 之变量【列表,元组,集合,字典,字符串】
70 0
Python 04 之变量【列表,元组,集合,字典,字符串】
|
9天前
|
Python
python 中列表和元组的解包
【6月更文挑战第17天】
15 1