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…...
Veil-Evasion核心模块深度解析:从控制器到Payload生成
Veil-Evasion核心模块深度解析:从控制器到Payload生成 【免费下载链接】Veil-Evasion Veil Evasion is no longer supported, use Veil 3.0! 项目地址: https://gitcode.com/gh_mirrors/ve/Veil-Evasion Veil-Evasion是一款专业的免杀payload生成工具&#x…...
Steam-Economy-Enhancer多货币支持:全球交易定价策略
Steam-Economy-Enhancer多货币支持:全球交易定价策略 【免费下载链接】Steam-Economy-Enhancer Enhances the Steam Inventory and Steam Market. 项目地址: https://gitcode.com/gh_mirrors/st/Steam-Economy-Enhancer Steam-Economy-Enhancer是一款强大的S…...
突破性ARM架构兼容方案:Box86揭秘x86程序在ARM设备上的运行奥秘
突破性ARM架构兼容方案:Box86揭秘x86程序在ARM设备上的运行奥秘 【免费下载链接】box86 Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box86 你是否曾想过,在…...
深入解析vsync:基于版本化状态流的高并发同步原语
1. 项目概述:一个被低估的同步利器如果你在开发中经常需要处理跨进程、跨线程的数据同步,或者为状态管理中的竞态条件头疼,那么nicepkg/vsync这个项目很可能就是你一直在寻找的“瑞士军刀”。乍一看这个标题,它像是一个普通的版本…...
泰米尔文TTS项目上线倒计时:ElevenLabs API v2.4.1强制启用新语音编码协议,旧集成方案将于2024年9月30日失效
更多请点击: https://intelliparadigm.com 第一章:泰米尔文TTS项目上线倒计时:ElevenLabs API v2.4.1强制启用新语音编码协议,旧集成方案将于2024年9月30日失效 ElevenLabs 已于 2024 年 7 月 15 日正式发布 API v2.4.1ÿ…...
【实战指南】从零构建YOLACT自定义数据集:标注、转换与训练全流程
1. 环境准备与工具安装 第一次接触YOLACT实例分割模型时,最让人头疼的就是环境配置。我清楚地记得去年做智能货架项目时,光是配环境就折腾了两天。为了让各位少走弯路,我把踩过的坑都总结在这里。 首先需要安装的是Python 3.7环境,…...
新手也能玩转CTF内存取证:从Win7镜像到Volatility插件实战(附Gimp调图技巧)
新手也能玩转CTF内存取证:从Win7镜像到Volatility插件实战(附Gimp调图技巧) 当你第一次接触CTF比赛中的内存取证题目时,面对一个陌生的内存镜像文件和一堆专业工具,可能会感到无从下手。本文将带你从零开始,…...
如何快速掌握Winhance中文版:Windows优化终极指南
如何快速掌握Winhance中文版:Windows优化终极指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...
OpenWrt嵌入式Linux开发入门:从编译到部署的完整实践指南
1. 项目概述:为什么选择OpenWrt作为嵌入式开发的起点 如果你对Linux系统有一定了解,并且想踏入嵌入式开发的大门,或者你是一个网络爱好者,想让家里的路由器“脱胎换骨”,那么OpenWrt绝对是一个绕不开的名字。它不是一…...
终极指南:如何用FanControl彻底解决电脑风扇噪音问题 [特殊字符]
终极指南:如何用FanControl彻底解决电脑风扇噪音问题 🎯 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...
