Python:核心知识点整理大全7-笔记
目录
4.2.5 遗漏了冒号
4.3 创建数值列表
4.3.1 使用函数 range()
4.3.2 使用 range()创建数字列表
结果如下:
4.3.3 对数字列表执行简单的统计计算
4.3.4 列表解析
4.4 使用列表的一部分
4.4.1 切片
4.4.2 遍历切片
4.4.3 复制列表
4.2.5 遗漏了冒号
for语句末尾的冒号告诉Python,下一行是循环的第一行
magicians = ['alice', 'david', 'carolina']
1 for magician in magiciansprint(magician)
如果你不小心遗漏了冒号,如1所示,将导致语法错误,因为Python不知道你意欲何为。这 种错误虽然易于消除,但并不那么容易发现。程序员为找出这样的单字符错误,花费的时间多得 令人惊讶。这样的错误之所以难以发现,是因为通常在我们的意料之外。
4.3 创建数值列表
需要存储一组数字的原因有很多,例如,在游戏中,需要跟踪每个角色的位置,还可能需要 跟踪玩家的几个最高得分。在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、 经度和纬度等)组成的集合。
列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理数字列表。 明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写的代码也能运行得很好。
4.3.1 使用函数 range()
Python函数range()让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数 range()来打印一系列的数字:
numbers.py
for value in range(1,5):print(value)
上述代码好像应该打印数字1~5,但实际上它不会打印数字5:
1
2
3
4
在这个示例中,range()只是打印数字1~4,这是你在编程语言中经常看到的差一行为的结果。 函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出 不包含第二个值(这里为5)。
要打印数字1~5,需要使用range(1,6):
1
2
3
4
5
使用range()时,如果输出不符合预期,请尝试将指定的值加1或减1。
4.3.2 使用 range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将为一个数字列表。 在前一节的示例中,我们打印了一系列数字。要将这些数字转换为一个列表,可使用list():
numbers = list(range(1,6))
print(numbers)
结果如下:
[1, 2, 3, 4, 5]
使用函数range()时,还可指定步长。例如,下面的代码打印1~10内的偶数:
even_numbers.py
even_numbers = list(range(2,11,2))
print(even_numbers)
在这个示例中,函数range()从2开始数,然后不断地加2,直到达到或超过终值(11),因此 输出如下:
[2, 4, 6, 8, 10]
使用函数range()几乎能够创建任何需要的数字集,例如,如何创建一个列表,其中包含前 10个整数(即1~10)的平方呢?在Python中,两个星号(**)表示乘方运算。下面的代码演示了 如何将前10个整数的平方加入到一个列表中:
squares.py
1squares = []
2 for value in range(1,11):
3 square = value**2
4 squares.append(square)
5 print(squares)
首先,我们创建了一个空列表(见1);接下来,使用函数range()让Python遍历1~10的值(见 2)。在循环中,计算当前值的平方,并将结果存储到变量square中(见3)。然后,将新计算得 到的平方值附加到列表squares末尾(见4)。最后,循环结束后,打印列表squares(见5):
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
为让这些代码更简洁,可不使用临时变量square,而直接将每个计算得到的值附加到列表 末尾:
squares = []
for value in range(1,11):
1 squares.append(value**2)
print(squares)
1处的代码与squares.py中2处和3处的代码等效。在循环中,计算每个值的平方,并立即将 结果附加到列表squares的末尾。
创建更复杂的列表时,可使用上述两种方法中的任何一种。有时候,使用临时变量会让代码 更易读;而在其他情况下,这样做只会让代码无谓地变长。你首先应该考虑的是,编写清晰易懂 且能完成所需功能的代码;等到审核代码时,再考虑采用更高效的方法。
4.3.3 对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、 最小值和总和:
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45
注意 出于版面考虑,本节使用的数字列表都很短,但这里介绍的知识也适用于包含数百万个 数字的列表。
4.3.4 列表解析
前面介绍的生成列表squares的方式包含三四行代码,而列表解析让你只需编写一行代码就 能生成这样的列表。列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。 面向初学者的书籍并非都会介绍列表解析,这里之所以介绍列表解析,是因为等你开始阅读他人 编写的代码时,很可能会遇到它们。
下面的示例使用列表解析创建你在前面看到的平方数列表:
squares.py
squares = [value**2 for value in range(1,11)]
print(squares)
要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号, 并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2,它计 算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for 语句末尾没有冒号。
结果与你在前面看到的平方数列表相同:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
要创建自己的列表解析,需要经过一定的练习,但能够熟练地创建常规列表后,你会发现这 样做是完全值得的。当你觉得编写三四行代码来生成列表有点繁复时,就应考虑创建列表解析了。
4.4 使用列表的一部分
在第3章中,你学习了如何访问单个列表元素。在本章中,你一直在学习如何处理列表的所 有元素。你还可以处理列表的部分元素——Python称之为切片。
4.4.1 切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python 在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3, 这将输出分别为0、1和2的元素。 下面的示例处理的是一个运动队成员列表:
players.py
players = ['charles', 'martina', 'michael', 'florence', 'eli']
1 print(players[0:3])
1处的代码打印该列表的一个切片,其中只包含三名队员。输出也是一个列表,其中包含前 三名队员:
['charles', 'martina', 'michael']
你可以生成列表的任何子集,例如,如果你要提取列表的第2~4个元素,可将起始索引指定 为1,并将终止索引指定为4:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4])
这一次,切片始于'marita',终于'florence':
['martina', 'michael', 'florence']
如果你没有指定第一个索引,Python将自动从列表开头开始:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
由于没有指定起始索引,Python从列表开头开始提取:
['charles', 'martina', 'michael', 'florence']
要让切片终止于列表末尾,也可使用类似的语法。例如,如果要提取从第3个元素到列表末 尾的所有元素,可将起始索引指定为2,并省略终止索引:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
Python将返回从第3个元素到列表末尾的所有元素:
['michael', 'florence', 'eli']
无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。本书前面说过, 负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。例如,如果你 要输出名单上的最后三名队员,可使用切片players[-3:]:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])
上述代码打印最后三名队员的名字,即便队员名单的长度发生变化,也依然如此。
4.4.2 遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,我们遍历前三名 队员,并打印他们的名字:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
1 for player in players[:3]:print(player.title())
处的代码没有遍历整个队员列表,而只遍历前三名队员:
Here are the first three players on my team:
Charles
Martina
Michael
在很多情况下,切片都很有用。例如,编写游戏时,你可以在玩家退出游戏时将其最终得分 加入到一个列表中。然后,为获取该玩家的三个最高得分,你可以将该列表按降序排列,再创建 一个只包含前三个得分的切片。处理数据时,可使用切片来进行批量处理;编写Web应用程序时, 可使用切片来分页显示信息,并在每页显示数量合适的信息。
4.4.3 复制列表
你经常需要根据既有列表创建全新的列表。下面来介绍复制列表的工作原理,以及复制列表 可提供极大帮助的一种情形。
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。 这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
例如,假设有一个列表,其中包含你最喜欢的四种食品,而你还想创建另一个列表,在其中 包含一位朋友喜欢的所有食品。不过,你喜欢的食品,这位朋友都喜欢,因此你可以通过复制来 创建这个列表:
foods.py
1 my_foods = ['pizza', 'falafel', 'carrot cake']
2 friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
我们首先创建了一个名为my_foods的食品列表(见1),然后创建了一个名为friend_foods的 新列表(见2)。我们在不指定任何索引的情况下从列表my_foods中提取一个切片,从而创建了 这个列表的副本,再将该副本存储到变量friend_foods中。打印每个列表后,我们发现它们包含‘的食品相同:
My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']
为核实我们确实有两个列表,下面在每个列表中都添加一种食品,并核实每个列表都记录了 相应人员喜欢的食品:
my_foods = ['pizza', 'falafel', 'carrot cake']
1 friend_foods = my_foods[:]
2 my_foods.append('cannoli')
3 friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
与前一个示例一样,我们首先将my_foods的元素复制到新列表friend_foods中(见1)。接下 来,在每个列表中都添加一种食品:在列表my_foods中添加'cannoli'(见2),而在friend_foods 中添加'ice cream'(见3)。最后,打印这两个列表,核实这两种食品包含在正确的列表中。
My favorite foods are:
4 ['pizza', 'falafel', 'carrot cake', 'cannoli']
My friend's favorite foods are:
5 ['pizza', 'falafel', 'carrot cake', 'ice cream']
4处的输出表明,'cannoli'包含在你喜欢的食品列表中,而'ice cream'没有。5处的输出 表明,'ice cream'包含在你朋友喜欢的食品列表中,而'cannoli'没有。倘若我们只是简单地将 my_foods赋给friend_foods,就不能得到两个列表。例如,下例演示了在不使用切片的情况下复 制列表的情况:
my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
1 friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
Python:核心知识点整理大全1-笔记-CSDN博客
Python:核心知识点整理大全2-笔记-CSDN博客
Python:核心知识点整理大全3-笔记-CSDN博客
Python:核心知识点整理大全4-笔记-CSDN博客
Python:核心知识点整理大全5-笔记-CSDN博客
Python:核心知识点整理大全6-笔记-CSDN博客
往期快速传送门👆(在文章最后):
相关文章:
Python:核心知识点整理大全7-笔记
目录 4.2.5 遗漏了冒号 4.3 创建数值列表 4.3.1 使用函数 range() 4.3.2 使用 range()创建数字列表 结果如下: 4.3.3 对数字列表执行简单的统计计算 4.3.4 列表解析 4.4 使用列表的一部分 4.4.1 切片 4.4.2 遍历切片 4.4.3 复制列表 4.2.5 遗漏了冒号 fo…...

Hadoop学习笔记(HDP)-Part.15 安装HIVE
目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...
【力扣100】4.移动零
题目链接 我的题解: class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# 思路是先计算共有几个0,然后remove几次,再末位加几个…...

Filebeat使用指南
Filebeat介绍主要优势主要功能配置日志的解析Kibana中设置日志解析安装步骤安装Filebeat安装监控通过prometheus监控 Filebeat和Logstash的主要区别 Filebeat介绍 Filebeat是使用Golang实现的轻量型日志采集器,也是Elasticsearch stack的一员。它可以作为一个agent…...

【Vue2】Vue的介绍与Vue的第一个实例
文章目录 前言一、为什么要学习Vue二、什么是Vue1.什么是构建用户界面2.什么是渐进式Vue的两种开发方式: 3.什么是框架 三、创建Vue实例四、插值表达式 {{}}1.作用:利用表达式进行插值,渲染到页面中2.语法3.错误用法 五、响应式特性1.什么是响…...

十五届蓝桥杯分享会(一)
注:省赛4月,决赛6月 一、蓝桥杯整体介绍 1.十四届蓝桥杯软件电子赛参赛人数:C 8w,java/python 2w,web 4k,单片机 1.8w,嵌入式/EDA5k,物联网 300 1.1设计类参赛人数:平…...

原生video设置控制面板controls显示哪些控件
之前我们学习了如何使用原生video播放视频 今天来一个进阶版的——设置控制面板controls显示哪些控件 先看一下当我们使用原生video时,controls属性为true时,相关代码如下: 正常的控制面板默认显示的控件有:播放、时间线、音量调…...

openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式2
openlayers地图使用—跟随地图比例尺动态标绘大小的一种方式2 预期:随着地图比例尺放大缩小,地图上的标绘随着变化尺寸 思路:通过不断添加地图图层实现标绘的动态缩放 优点:标绘放大缩小非常流畅 缺点:标绘超过1000…...

C语言期末考试复习PTA数据类型及表达式-分支结构程序-循环结构-数组经典选择题
目录 第一章:C语言数据类型和表达式 第一题: 第二题: 第三题: 第四题: 第五题: 第六题: 第七题: 第八题: 第九题: 第二章:分支结构程序…...

RHEL8_Linux访问NFS存储及自动挂载
本章主要介绍NFS客户端的使用 创建FNS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.访问NFS存储 前面介绍了本地存储,本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统,所实现的是 Linux 和 Linux 之间的共…...

python 使用 AppiumService 类启动appium server
一、前置说明 在Appium的1.6.0版本中引入了AppiumService类,可以很方便的通过该类来管理Appium服务器的启动和停止。 二、操作步骤 import osfrom appium.webdriver.appium_service import AppiumService as OriginalServerfrom libs import pathclass AppiumSer…...

HbuilderX使用Uniapp+Vue3安装uview-plus
如果你是vue2版本想使用uniapp去配置uviewui库可以参考之前的文章 小程序的第三方ui库推荐较多的还是uview的,看起来比较美观,功能也比较完善,下面将提一下Vue3安装uview-plus库的教程 创建项目 安装 首先进入官网 uView-Plus 直接下载并导…...
【Android】Java NIO(New I/O)的`Selector`类来实现非阻塞的Socket监听
如果你不想使用循环来监听客户端的连接和数据,你可以使用Java NIO(New I/O)的Selector类来实现非阻塞的Socket监听。Selector类提供了一种选择一组已经就绪的通道的机制,这样你就不需要使用循环来等待连接和数据。 以下是使用Sel…...

『亚马逊云科技产品测评』在当前飞速发展的AI人工智能时代云服务技术哪家强?
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、亚马逊&阿里云发展历史介绍1.1 亚马逊发展历史1.2…...

经典神经网络——ResNet模型论文详解及代码复现
论文地址:Deep Residual Learning for Image Recognition (thecvf.com) PyTorch官方代码实现:vision/torchvision/models/resnet.py at main pytorch/vision (github.com) B站讲解: 【精读AI论文】ResNet深度残差网络_哔哩哔哩_bilibili …...

OpenCV-Python:DevCloud CodeLab介绍及学习
1.Opencv-Python演示环境 windows10 X64 企业版系统python 3.6.5 X64OpenCV-Python 3.4.2.16本地PyCharm IDE线上注册intel账号,使用DevCloud CodeLab 平台 2.DevCloud CodeLab是什么? DevCloud是一个基于云端的开发平台,提供了强大的计算…...

如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
目录 前言 1. Ubuntu安装SVN服务 2. 修改配置文件 2.1 修改svnserve.conf文件 2.2 修改passwd文件 2.3 修改authz文件 3. 启动svn服务 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射本地端口 5. 测试公网访问 6. 配置固定公网TCP端口地址 6.1 保留一个固定…...

C语言入门课程之课后习题之折半查找法
目录 1解题思路: 2代码所示: 3运行代码: 4习题不难,多刷题,练思路,最重要的不是学会了一道题,而是掌握其编程思想; 1解题思路: 折半查找法(half-interval…...
【CSP】202209-1_如此编码Python实现
文章目录 [toc]试题编号试题名称时间限制内存限制题目背景题目描述输入格式输出格式样例1输入样例1输出样例2输入样例2输出样例3输入样例3输出样例3解释子任务提示Python实现 试题编号 202209-1 试题名称 如此编码 时间限制 1.0s 内存限制 512.0MB 题目背景 某次测验后&#x…...
std::function
通过使用std::function,可以将不同类型的可调用对象封装成统一的格式,从而使用相同的接口进行调用;在设计回掉函数、事件处理 、函数对象等场景中十分有用。 ① 封装函数指针 ② 封装lambda ③ 封装成员函数等 1. 包含头文件 #include<fun…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...

Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...