Python:核心知识点整理大全5-笔记

目录

2. 使用方法pop()删除元素

3. 弹出列表中任何位置处的元素

4. 根据值删除元素

3 章 列表简介

3.3 组织列表

3.3.1 使用方法 sort()对列表进行永久性排序

3.3.2 使用函数 sorted()对列表进行临时排序

3.3.3 倒着打印列表

3.3.4 确定列表的长度

3.5 小结


2. 使用方法pop()删除元素

有时候,你要将元素从列表中删除,并接着使用它的值。例如,你可能需要获取刚被射杀的 外星人的x和y坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活 跃成员列表中删除,并将其加入到非活跃成员列表中。

方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类 比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。 下面从列表motorcycles中弹出一款摩托车:

1 motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
2 popped_motorcycle = motorcycles.pop()
3 print(motorcycles)
4 print(popped_motorcycle)

我们首先定义并打印了列表motorcycles(见1)。接下来,我们从这个列表中弹出一个值, 并将其存储到变量popped_motorcycle中(见2)。然后我们打印这个列表,以核实从其中删除了 一个值(见3)。最后,我们打印弹出的值,以证明我们依然能够访问被删除的值(见4)。 输出表明,列表末尾的值'suzuki'已删除,它现在存储在变量popped_motorcycle中:

['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki 

方法pop()是怎么起作用的呢?假设列表中的摩托车是按购买时间存储的,就可使用方法 pop()打印一条消息,指出最后购买的是哪款摩托车:

motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print("The last motorcycle I owned was a " + last_owned.title() + ".")

输出是一个简单的句子,指出了最新购买的是哪款摩托车:

The last motorcycle I owned was a Suzuki

3. 弹出列表中任何位置处的元素

实际上,你可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素 的索引即可。

motorcycles = ['honda', 'yamaha', 'suzuki']
1 first_owned = motorcycles.pop(0)
2 print('The first motorcycle I owned was a ' + first_owned.title() + '.')

首先,我们弹出了列表中的第一款摩托车(见1),然后打印了一条有关这辆摩托车的消息 (见2)。输出是一个简单的句子,描述了我购买的第一辆摩托车:

The first motorcycle I owned was a Honda. 

别忘了,每当你使用pop()时,被弹出的元素就不再在列表中了。

如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表 中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续 使用它,就使用方法pop()。

4. 根据值删除元素

有时候,你不知道要从列表中删除的值所处的位

置。如果你只知道要删除的元素的值,可使 用方法remove()。

例如,假设我们要从列表motorcycles中删除值'ducati'。

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
1 motorcycles.remove('ducati')
print(motorcycles)

1 处的代码让Python确定'ducati'出现在列表的什么地方,并将该元素删除:

['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki'] 

使用remove()从列表中删除元素时,也可接着使用它的值。下面删除值'ducati',并打印一 条消息,指出要将其从列表中删除的原因:

3 章 列表简介

1 motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
2 too_expensive = 'ducati'
3 motorcycles.remove(too_expensive)
print(motorcycles)
4 print("\nA " + too_expensive.title() + " is too expensive for me.") 

在1处定义列表后,我们将值'ducati'存储在变量too_expensive中(见2)。接下来,我们 使用这个变量来告诉Python将哪个值从列表中删除(见3)。最后,值'ducati'已经从列表中删除, 但它还存储在变量too_expensive中(见4),让我们能够打印一条消息,指出将'ducati'从列表 motorcycles中删除的原因:

['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me. 

注意 方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要 使用循环来判断是否删除了所有这样的值。你将在第7章学习如何这样做。


3.3 组织列表

在你创建的列表中,元素的排列顺序常常是无法预测的,因为你并非总能控制用户提供数据 的顺序。这虽然在大多数情况下都是不可避免的,但你经常需要以特定的顺序呈现信息。有时候, 你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列 表的方式,可根据具体情况选用。

3.3.1 使用方法 sort()对列表进行永久性排序

Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其 中的汽车按字母顺序排列。为简化这项任务,我们假设该列表中的所有值都是小写的。

cars.py

cars = ['bmw', 'audi', 'toyota', 'subaru']
1 cars.sort()
print(cars)

方法sort()(见1)永久性地修改了列表元素的排列顺序。现在,汽车是按字母顺序排列的, 再也无法恢复到原来的排列顺序:

['audi', 'bmw', 'subaru', 'toyota']

你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数 reverse=True。下面的示例将汽车列表按与字母顺序相反的顺序排列:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars) 

同样,对列表元素排列顺序的修改是永久性的:

['toyota', 'subaru', 'bmw', 'audi']

3.3.2 使用函数 sorted()对列表进行临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数 sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

下面尝试对汽车列表调用这个函数。

cars = ['bmw', 'audi', 'toyota', 'subaru']
1 print("Here is the original list:")
print(cars)
2 print("\nHere is the sorted list:")
print(sorted(cars))
3 print("\nHere is the original list again:")
print(cars) 

我们首先按原始顺序打印列表(见1),再按字母顺序显示该列表(见2)。以特定顺序显示 列表后,我们进行核实,确认列表元素的排列顺序与以前相同(见3)

Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
4 Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']

注意,调用函数sorted()后,列表元素的排列顺序并没有变(见4)。如果你要按与字母顺 序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。


注意 在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种 解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。然而, 大多数排序方式都基于本节介绍的知识。


3.3.3 倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。假设汽车列表是按购买时间排列的, 可轻松地按相反的顺序排列其中的汽车:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars) 

注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排 列顺序:

['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']

方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此 只需对列表再次调用reverse()即可。

3.3.4 确定列表的长度

使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4:

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4 

在你需要完成如下任务时,len()很有用:确定还有多少个外星人未被射杀,需要管理多少 项可视化数据,网站有多少注册用户等。


注意 Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。


3.4 使用列表时避免索引错误 刚开始使用列表时,经常会遇到一种错误。假设你有一个包含三个元素的列表,却要求获取 第四个元素:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])

这将导致索引错误

Traceback (most recent call last):File "motorcycles.py", line 3, in <module>print(motorcycles[3])
IndexError: list index out of range 

Python试图向你提供位于索引3处的元素,但它搜索列表motorcycles时,却发现索引3处没有 元素。鉴于列表索引差一的特征,这种错误很常见。有些人从1开始数,因此以为第三个元素的 索引为3;但在Python中,第三个元素的索引为2,因为索引是从0开始的。

索引错误意味着Python无法理解你指定的索引。程序发生索引错误时,请尝试将你指定的索 引减1,然后再次运行程序,看看结果是否正确。

别忘了,每当需要访问最后一个列表元素时,都可使用索引-1。这在任何情况下都行之有效, 即便你最后一次访问列表后,其长度发生了变化:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])

索引-1总是返回最后一个列表元素,这里为值'suzuki':

'suzuki' 

仅当列表为空时,这种访问最后一个元素的方式才会导致错误:

motorcycles = []
print(motorcycles[-1])

列表motorcycles不包含任何元素,因此Python返回一条索引错误消息:

Traceback (most recent call last):File "motorcyles.py", line 3, in <module>print(motorcycles[-1])
IndexError: list index out of range

注意 发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以 为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素 数,可帮助你找出这种逻辑错误。


3.5 小结

在本章中,你学习了:列表是什么以及如何使用其中的元素;如何定义列表以及如何增删元 素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度, 以及在使用列表时如何避免索引错误。 在第4章,你将学习如何以更高效的方式处理列表元素。通过使用为数不多的几行代码来遍 历列表元素,你就能高效地处理它们,即便列表包含数千乃至数百万个元素。


Python:核心知识点整理大全3-笔记-CSDN博客

Python:核心知识点整理大全2-笔记-CSDN博客

Python:核心知识点整理大全1-笔记-CSDN博客

往期快速传送门👆(在文章最后):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试:测试用例八大要素模板

一、通用测试用例八要素 1、用例编号&#xff1b; 2、测试项目&#xff1b; 3、测试标题&#xff1b; 4、重要级别&#xff1b; 5、预置条件&#xff1b; 6、测试输入&#xff1b; 7、操作步骤&#xff1b; 8、预期输出 二、具体分析通用测试用例八要素 1、用例编号 一般是数字…

[NAND Flash 2.1] NAND Flash 闪存改变了现代生活

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< ​ 1989年NAND闪存面世了&#xff0c;它曾经且正在改变了我们的日常生活。 NAND 闪存发明之所以伟大&#xff0c;是因为&#xff0c…

一个CV算法工程师在技术方面的小反思

极市导读 正如作者所说,做一个算法工程师最重要的素质是在海量的算法方案中理解,吃透那些真正的干货,然后不断在实践中去验证,并总结吸收到自己的脑子里。本文记录了作者在算法工程师这个岗位上一年后总结的一些关于技术上的经验总结。>>加入极市CV技术交流群,走在计…

怎样解决编译后的exe文件运行时产生的错误?

编译后的exe文件运行时&#xff0c;错误如下错误提示&#xff1a;Traceback (most recent call last):File "pd.py", line 1, in <module>from pdf2docx import parse ModuleNotFoundError: No module named pdf2docx 怎样解决&#xff1f; 这个错误提示表明…

java数据结构面试题

1.栈和队列的共同特点是&#xff08;只允许在端点处插入和删除元素&#xff09; 4.栈通常采用的两种存储结构是&#xff08;线性存储结构和链表存储结构&#xff09; 5.下列关于栈的叙述正确的是&#xff08;D&#xff09; A.栈是非线性结构 B.栈是一种树状结构 C.栈具有先进先…

苹果OS X系统介绍(Mac OS --> Mac OS X --> OS X --> macOS)

文章目录 OS X系统介绍历史与版本架构内核与低级系统图形&#xff0c;媒体和用户界面应用程序和服务 特性用户友好强大的命令行安全性集成与互操作性 总结 OS X系统介绍 OS X是由苹果公司为Macintosh计算机系列设计的基于UNIX的操作系统。其界面友好&#xff0c;易于使用&…

使用 nohup java - jar 不输出日志

要在使用nohup java -jar命令时不输出日志&#xff0c;可以将标准输出和标准错误输出重定向到特殊设备文件/dev/null。这样做将会丢弃所有的输出。 以下是在Linux中使用nohup java -jar命令并禁止输出日志的示例&#xff1a; 复制代码 nohup java -jar your-application.jar …

Python可视化(二)——Seaborn

Seaborn是一个基于matplotlib的可视化库&#xff0c;其为用户提供了高级接口&#xff0c;并且该工具还深度集成了pandas的数据结构。并且该工具该集成了很多数据库&#xff0c;配合官网给出的代码示例&#xff0c;可以更方便的进行操作。 官网对它的介绍为&#xff1a; Seabo…

Servlet学习笔记

简介 浏览器请求处理流程&#xff1a;浏览器发请求 > 服务器tomcat( > 应用程序 ( > servlet) ) Servlet应用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放项目的层级结构 注释&#xff1a;servlet原引用包名 javax.serv…

卡尔曼滤波器

欢迎访问我的博客首页。 卡尔曼滤波器 1. 参考 1. 参考 卡尔曼滤波器&#xff0c;B 站&#xff0c;2020。扩展卡尔曼滤波器&#xff0c;CSDN&#xff0c;2023。

Git的安装以及SSH配置

前言 近期工作需要&#xff0c;所以版本管理工具要用到Git&#xff0c;某些操作需要ssh进行操作&#xff0c;在某次操作中遇到&#xff1a;git bash报错&#xff1a;Permission denied, please try again。经排查是ssh没有配置我的key&#xff0c;所以就借着这篇文章整理了一下…

WorkPlus即时通讯,让沟通零障碍!企业协作更高效

如今&#xff0c;随着信息技术的快速发展&#xff0c;企业对于高效沟通和即时协作的需求也日益增长。在这个数字化时代&#xff0c;WorkPlus作为一款领先的企业级移动办公平台&#xff0c;以其强大的即时通讯功能和卓越的用户体验&#xff0c;成功为企业打造了高效沟通的新时代…

input = torch.randn(20, 2, 11, 11, 32)输出形式

input torch.randn(20, 2, 11, 11, 32) m torch.nn.AdaptiveAvgPool3d((1,1, 32)) xm(input) print(x.shape) 结果&#xff1a; 也就是不用管批次和通道数

pico示波器使用

文章目录 Pico示波器保存波形Pico示波器录制数据Pico示波器解析CAN报文Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形: 在示波器上选择要保存的波形。连接示波器到计算机上,可以使用USB或者Ethernet连接。打开PicoScope软件,选择“File”菜单,然后选择“Save As…

Python开发运维:Python垃圾回收机制

目录 一、理论 1.Python垃圾回收机制 一、理论 1.Python垃圾回收机制 &#xff08;1&#xff09;引⽤计数器 1&#xff09;环状双向链表 refchain 在python程序中创建的任何对象都会放在refchain链表中。 name "david" age 20 hobby ["篮球",游泳…

放苹果 .

把m个同样的苹果放在n个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f; 注意&#xff1a;如果有7个苹果和3个盘子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#xff0c;1&…

spring集成mybatis简单教程

首先说下实现了什么效果&#xff0c;就是不用每次查询前手动创建 sessionFactory和添加datasource文件了。 整个工程结构是这样的 这次我也把代码放在了gitee上&#xff0c;方便大家更全貌的看到所有的实现细节。代码链接如下&#xff1a; Java: 一些Java代码 (gitee.com) …

大话数据结构-查找-多路查找树

注&#xff1a;本文同步发布于稀土掘金。 7 多路查找树 多路查找树&#xff08;multi-way search tree&#xff09;&#xff0c;其每个结点的孩子可以多于两个&#xff0c;且每一个结点处可以存储多个元素。由于它是查找树&#xff0c;所有元素之间存在某种特定的排序关系。 …

排序:归并排序

目录 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 思路分析&#xff1a; 代码分析&#xff1a; 划分区间思路&#xff1a; 代码思路分析&#xff1a; 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff…

2023 CCF中国软件大会(CCF ChinaSoft)“软件工程教育”论坛 成功召开

2023年12月1日&#xff0c;2023年度CCF中国软件大会“软件工程教育”论坛成功召开。 ✦ 自去年来大模型技术的出现以及在各个领域的应用&#xff0c;对相关的学科和行业产生了深刻的影响。软件工程首当其冲&#xff0c;以ChatGpt和CopilotX等为代表的智能化开发工具可以帮助软…