课时6:列表的方法

简介: 本文介绍了Python中通过列表方法修改列表的操作,包括`append()`、`insert()`、`extend()`、`clear()`、`pop()`、`remove()`、`reverse()`和`sort()`。这些方法用于在列表中添加、插入、扩展、清空、删除元素,以及反转和排序列表。示例代码展示了如何使用这些方法来操作包含“孙悟空”、“猪八戒”和“沙和尚”的列表,并解释了每个方法的具体功能和用法。注意,这些方法仅适用于可变序列。

列表的方法

 

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


1.1 修改列表的列表方法

上节课通过索引和切片去修改列表,接下来讲通过列表的方法来修改列表,创建05.列表的方法.py文件,然后在创建一个stus列表,分别在列表中输入’孙悟空’,’猪八戒’,’沙和尚’,然后输出原列表内容,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)

image.png

image.png


列表的方法在python 3.6.5 documentaion里找查看的内容,打开后点击The Python Standard Library,如下图:

image.png

然后找4.6.Sequence Types é list, tuple, range点击进入,如下图:

image.png

image.png

image.png

如上图属于4.6.1的内容这些就是列表的通用操作,不管是可变序列还是不可变序列都是可以用的。

下图属于4.6.3的内容,这些操作只适用于可变序列操作,

image.png

从上图中找到s.append(x),x表示元素,作用是把x这个元素添加到列表的最后,那先不用 Append  的方法来直接添加试试行不行,继续用上述stus列表一直列表内有三个元素,索引分别是0,1,2所以在最后直接添加一个试试行不行,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
stus[3]='a'

image.png

image.png

从执行结果来看是不行的,是因为元列表stus没有索引为3的元素所以不行,那接下来用s.append(x)测试一下,在原本的stus列表最后添加一个’唐僧’这个元素,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
#append()
stus.append('唐僧')
print('修改后:',stus)

image.png

image.png

从执行结果来看,append()这个方法是可以的,所以append()的作用就是向列表最后添加一个元素,那个列表调用append()方法就向那个列表最后添加元素,比如上面这个示例是向 Stus 列表添加所以写成stus.append('唐僧')。

image.png

接下来讲insert()方法,这个方法的作用是向列表指定位置插入一个元素,上图来看格式为s.insert(i,x),从格式来看s是调用的列表,而i这个参数是要插入元素的索引位置,然后x这个参数是要插入的元素,那接下来测试把’唐僧‘插入到原来 Stus 列表中索引为2的位置,也就是原来’沙和尚‘的位置,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
#insert()
#向列表的指定位置插入一个元素
#参数:
#1.要插入的位置
#2.要插入的元素
stus.insert(2,'唐僧')
print('修改后:',stus)

image.png

image.png

之前讲到的索引方式插入是替代原本的元素,即给原列表中的沙和尚换为唐僧,而insert是插入后原来的位置元素后移一个索引保留,这是这两方法的不同。

image.png

接下来讲s.extend(t)是使用新的序列来扩展当前序列,t是表示序列,extend()需要一个序列作为参数,它会将该序列中的元素添加到当前列表中,接下来测试把’唐僧‘和’白骨精‘两个作为元素组成新的列表然后扩展到stus的列表中,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
# extend()
#使用新的序列来扩展当前序列
#需要一个序列作为参数,它会将该序列中的元素添加到当前列表中stus.extend([‘唐僧’,’白骨精’])
print('修改后:',stus)

image.png

image.png

本示例的效果也可以通过+=来实现,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
stus +=[‘唐僧’,’白骨精’]
print('修改后:',stus)

image.png

image.png

image.png

接下来讲clear()这个方法,它的作用是清空序列,适用于可变序列,

然后尝试清空stus这个列表,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
#clear()
# 清空序列
stus.clear()
print('修改后:',stus)

image.png

image.png

image.png

如上图这两个的作用是删除,pop()的作用是根据提供的索引删除并返回被删除元素,继续用stus这个类别来测试删除索引为2的元素,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
stus.pop(2)#删除索引为2的元素
print('修改后:',stus)

image.png

image.png

image.png

del和pop()同样是删除区别在于pop()会有删除的返回值,接下来输出一下删除的返回值,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
result = stus.pop(2)#删除索引为2的元素
print('result =',result)
print('修改后:',stus)

image.png

image.png

image.png  

从示例可以看出result返回的值是沙和尚,接下来尝试不加索引值看看是会删除那个?测试如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
result = stus.pop()
print('result =',result)
print('修改后:',stus)

image.png

image.png image.png

从示例看出当不加索引时,会删除最后一个元素,接下来测试删除索引为1的元素,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
result = stus.pop(1)
print('result =',result)
print('修改后:',stus)

image.png

image.png

image.png

以以上示例就是pop()的用法和操作,接下来讲另一个删除的方法是remove()是删除指定值得元素,例如删除stus列表里的猪八戒这个元素,示例如下:

stus =['孙悟空','猪八戒','沙和尚']
print('原列表:',stus)
stus.remove('猪八戒')
print('修改后:',stus)

image.png

image.png

image.png

pop()是根据索引来删除,而remove()是直接删除元素值。

假如在stus里有两个猪八戒那remove()会删除那个呢?

示例如下:

stus =['孙悟空','猪八戒','沙和尚','猪八戒']
print('原列表:',stus)
stus.remove('猪八戒')
print('修改后:',stus)

image.png

image.png

image.png

从执行结果来看只删除了第一个猪八戒,所以remove()在删除时如果相同值得元素有多个,只会删除第一个。那remove()有没有删除返回值呢?示例如下:

stus =['孙悟空','猪八戒','沙和尚','猪八戒']
print('原列表:',stus)
result= stus.remove('猪八戒')
print('result =',result)
print('修改后:',stus)

image.png

image.png

image.png

从测试来看是没有返回值的。接下来讲reverse()是用来反转列表,然后把原本stus列表最后的猪八戒改为唐僧来测试reverse(),

示例如下:

stus =['孙悟空','猪八戒','沙和尚','唐僧']
print('原列表:',stus)
# reverse()
#用来反转列表
stus.reverse()
print('修改后:',stus)

image.png

image.png

image.png

从以上示例可以看出reverse()已经把列表反转了。

接下来讲sort()方法是用来对列表中的元素进行排序,然后从小创建一个my_list来测试一下,示例如下:

# sort()
#用来对列表中的元素进行排序
my_list= list('asnbdnbasdabd')
print('修改前', my_list)
my_list.sort()
print('修改后’, my_list)

image.png

image.png

从结果来看把这它们进行了升序排列,所以sort()默认是的升序排列,

接下来做一个明显的数字测试,示例如下:

# sort()
#用来对列表中的元素进行排序
my_list= list('asnbdnbasdabd')
my_list =[10,1,20,3,4,5,0,-2]
print('修改前', my_list)
my_list.sort()
print('修改后’, my_list)

image.png

image.png

从数字的结果来说更明显,那sort方法在哪里查看呢?如下图:

image.png

虽然sort()默认是的升序排列,如果需要降序排列,则需要传递一个reverse=True作为参数,示例如下:

# sort()
#用来对列表中的元素进行排序
my_list= list('asnbdnbasdabd')
my_list =[10,1,20,3,4,5,0,-2]
print('修改前', my_list)
my_list.sort(reverse=True)
print('修改后’, my_list)

image.png

image.png

总结本节课讲到的方法,分别是:append()、insert()、extend()、

clear()、pop()、remove()、reverse()、sort()。注意:这节课的方法操作只适用于可变序列。

相关文章
|
SQL Java 数据库连接
Mybatis中强大的resultMap
Mybatis中强大的resultMap
384 0
|
8月前
|
人工智能 安全 网络安全
互联网时代-网站安全问题该如何解决?
在互联网时代,网站安全至关重要。为防止隐私泄露和数据风险,需建立严格的访问控制机制、实施内容审查与过滤、采用数据加密与保护措施、强化用户身份验证、加强内部网络安全,并定期更新维护安全措施。通过多方面入手,如使用防火墙、内容审核工具、SSL/TLS 加密、API 验证等手段,可有效提升网站安全性,确保网络环境的安全可靠。
|
9月前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
428 9
|
11月前
|
SQL 存储 Apache
Apache Doris 3.0.3 版本正式发布
亲爱的社区小伙伴们,Apache Doris 3.0.3 版本已于 2024 年 12 月 02 日正式发布。该版本进一步提升了系统的性能及稳定性,欢迎大家下载体验。
456 16
|
JavaScript 算法
【Vue面试题十七】、你知道vue中key的原理吗?说说你对它的理解
这篇文章深入探讨了Vue中`key`的原理及其作用,解释了`key`是为每个虚拟DOM节点提供的唯一标识符,作为`diff`算法的优化策略,有助于更快速准确地识别和重用DOM元素。文章通过实际代码示例展示了使用`key`与否在列表渲染时对DOM操作的影响,分析了`key`在不同场景下的性能表现,并提供了源码层面的分析,解释了Vue如何通过`key`来识别和更新虚拟DOM节点。
【Vue面试题十七】、你知道vue中key的原理吗?说说你对它的理解
|
存储 网络架构
计算机网络:数据链路层(网桥)
计算机网络:数据链路层(网桥)
487 0
|
存储 NoSQL 算法
聊一聊分布式锁的设计模型
什么是分布式锁?对于这个问题,相信很多同学是即熟悉又陌生。随着分布式系统的快速发展与广泛应用,针对共享资源的互斥访问也成为了很多业务必须要面对的需求,这个场景下人们通常会引入分布式锁来解决问题。我们通常会使用怎么样的分布锁服务呢?在使用分布式锁过程中,总还是会提出这样、那样的新需求,看起来找不到一个分布式锁场景的大一统的解决方案。那么,分布式锁内部究竟是怎么实现的?或者说应该怎么实现呢?这个是我们这篇文章希望探讨的。
1946 1
聊一聊分布式锁的设计模型
|
XML 前端开发 API
中台框架的模块开发实践-代码生成器的添加及使用
本文档介绍了如何在中台项目框架 ZhonTai.Core 中集成代码生成器模块,以提升开发效率。首先,需要拉取 ZhonTai.Admin 和 ZhonTai.Module.Dev 的代码仓库,创建模块文件夹并配置后端代码。在后端,通过添加模块类库和路由配置,实现代码生成器服务。接着,配置前端,安装所需依赖,并修改路由配置以添加代码生成器模块。然后,将生成的代码添加到项目中,包括数据库迁移、菜单和权限配置。最后,展示了生成器的使用步骤和效果,包括创建数据表、生成菜单数据以及前端页面展示。文章还提及了后续的扩展计划,如自定义模板管理和通用代码生成器,并提供了相关的代码仓库链接。
80068 5
|
数据采集 存储 运维
物联网设备的数据处理与分析技术探讨
【7月更文挑战第2天】探索物联网(IoT)数据处理技术,涵盖数据采集(传感器、无线通信)、存储(分布式系统、NoSQL)、处理(清洗、压缩、转换)和分析(描述性、聚类、分类、异常检测)。未来趋势涉及AI集成、边缘计算、多模态处理和系统自主化。随着技术演进,期待更智能、高效的解决方案。
|
机器学习/深度学习 算法 编译器
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
320 0