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

相关文章
|
7天前
|
数据采集 存储 JSON
Python爬虫开发:BeautifulSoup、Scrapy入门
在现代网络开发中,网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据,并且可以用于各种用途,如数据收集、信息聚合和内容监控等。在Python中,有多个库可以用于爬虫开发,其中BeautifulSoup和Scrapy是两个非常流行的选择。本篇文章将详细介绍这两个库,并提供一个综合详细的例子,展示如何使用它们来进行网页数据爬取。
|
5天前
|
存储 索引 Python
Python学习笔记----列表、元组和字典的基础操作
这篇文章是一份Python学习笔记,涵盖了列表、元组和字典的基础操作,包括它们的创建、修改、删除、内置函数和方法等。
Python学习笔记----列表、元组和字典的基础操作
|
4天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。
|
5天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。 今天给小伙伴们分享的这份Python数据分析入门手册本着实用性的目的,着眼于整个数据分析的流程,介绍了从数据采集到可视化的大致流程。
|
7天前
|
索引 Python
Day 7/100:Python列表
Day 7/100:Python列表
9 1
|
4天前
|
存储 数据安全/隐私保护 索引
Python基础语法day02字符串详解和列表
Python基础语法day02字符串详解和列表
|
6天前
|
存储 算法 调度
10种 Python数据结构,从入门到精通
10种 Python数据结构,从入门到精通
7 0
|
6天前
|
机器学习/深度学习 算法 数据挖掘
机器学习新手也能飞:Python+Scikit-learn让你轻松入门!
在数据驱动的时代,机器学习是推动科技进步和智能化生活的关键。Python以简洁的语法和强大的库支持,成为机器学习的理想语言。Scikit-learn作为Python的开源机器学习库,提供简单易用的API和丰富的算法,降低了学习门槛。通过Python结合Scikit-learn,即使是初学者也能快速上手,如使用鸢尾花数据集进行分类任务,体验从数据预处理到模型训练和评估的全过程,进而探索更多机器学习的可能性。
18 0
|
7天前
|
存储 Python 容器
"解锁编程奇迹,Python基础入门:一剑在手,编程江湖任你遨游,从零到英雄的超燃蜕变之旅!"
【8月更文挑战第12天】编程曾被视为复杂的技能,Python却让其变得异常亲和简单。作为优雅且强大的语言,Python以简洁的语法、丰富的库支持及广泛的应用领域,成为初学者首选。本文将引导你开启Python学习之旅,通过基础概念与示例代码,让你领略编程魅力。
21 0