Lesson6 Python基础语法_5

列表和元组的概念

  • 列表、元组:程序员在代码中批量表示数据的方式
  • 列表和元组的大部分功能都是相同的,但是有一个明显的差别:列表可以修改,但是元组不能修改
  • 列表相当于散装辣条,元组相当于袋装辣条

列表的创建和下标访问

可以在创建列表的时候使用 [ ] 指定列表的初始值,元素之间使用英文逗号分隔

a = [1,2,3,4]
print(a)

 可以在一个列表里放不同类型的元素

a = [1,'hello',True,[2,3,4]]
print(a)

可以使用下标(索引)访问的方式获取列表中的元素(下标访问运算符[ ])

Python中的下标从0开始计数(C语言开创的先例)

a = [1,2,3,4]
print( a[2] )

可以使用下标修改列表中的元素

a = [1,2,3,4]
a[2] = 66
print(a[2])

可以使用内建函数len()来获取列表的长度(元素个数),和字符串很相似

a = [1,2,3,4]
print( len(a) )

使用下标访问列表元素时,下标大小不能超过最大值

值得注意的是,列表的下标可以写成负数

a = [1,2,3,4]
print( a[len(a) - 1] )
print( a[-1] )

 列表的切片操作

a = [1,2,3,4]
print( a[1:3] )
  • 如上所示,切片操作中[ ]里面的两个数字表示了一段区间
  • 1表示开始的下标,3表示结束的下标,但这是一个前闭后开的区间(不包括下标为3的下标)
  • 切片操作是一个比较高效的操作,只会取出原来列表的一个部分,不涉及“数据的拷贝”

使用切片时省略边界 

 带有步长的切片操作


列表的遍历操作

遍历:将一个列表中的每一个元素依次取出来,并对它们进行某种操作

遍历的操作有很多种,我们在下面一一列举,但是基本上第一种使用最为频繁

  • 创建elem变量在for循环中遍历列表元素

  • 创建变量i,以下标的方式遍历列表中的元素

  • 创建变量i,在while循环中以下标的方式遍历列表中的元素


列表的插入操作

使用append()函数往列表末尾新增一个元素

使用insert()函数往列表中的任意位置添加元素


列表的查找和删除

使用in来判定某个元素在列表中是否存在

使用index,根据内容来寻找某个元素在该列表中的下标

使用pop删除列表最末尾的元素

使用pop删除任意位置的元素(根据下标)

使用remove,根据值来删除对应的元素


列表的拼接

使用+拼接列表

生成了一个更大的列表,原有的列表保持不变

使用extend拼接列表(extend没有返回值)

将后一个列表的内容拼接到前一个列表上

使用+=拼接列表(不推荐,相比于第二种方式多了很多操作)


元组的操作

元组的创建:使用 ( ) 或者 turple( )

但值得注意的是,下标访问依旧采用 [ ]

元组的很多操作和列表都是相同的,但这些操作指的是只读操作,因为元组是不可以更改的

函数中的return语句返回多个值的时候,实际上是按照元组的方式进行工作的

然后我们采用多元赋值的方式接收元组

如下图代码所示

元组的优势:协同开发时保护实际参数

协同开发时,A写好的函数让B去调用

但是B会有疑虑:我将参数传给这个函数,那么这个函数要是修改我传的参数怎么办

我们则可以借助元组解决这个问题,因为元组是不能修改的


字典的创建

  • 键值对是计算机中一个非常重要的概念
  • 键(key)、值(value):根据key能够快速找到value(映射关系)
  • Python的字典中可以包含很多的键值对,但是所有的键不能重复
  • 字典中的键的类型不一定都一样,值的类型也不一定都一样
  • 字典对于键的类型有约束,但是对于值的类型没有约束


 字典查找key

使用 in / not in 来判定某个 key 在字典中是否存在(与value无关)

使用 [ ] 根据 key 来获取 value

  • 对于列表来说,使用 in 比较低效(需要遍历列表),使用 [ ] 比较高效(类似于数组取下标)
  • 对于字典来说,两者都非常高效(字典的背后使用了特殊的数据结构:哈希表)

字典的新增、修改和删除

使用 [ ] 新增和修改字典的元素

使用 pop 方法,根据 key 删除键值对


 理解哈希表的效率(字典的背后是哈希表)

  • 遍历:将一个可迭代对象里面包含的元素依次取出来,并进行一些操作,整个过程要求不重不漏
  • 字典被设计的初衷是为了增删查改,而不是为了遍历
  • 字典属于哈希表,进行增删查改的效率很高(常数级的时间复杂度,操作的时间不会因为元素数量而变化),而遍历的效率要差一些
  • 数据结构最重要的就是哈希表

字典的遍历

下图所示为典型的例子


 可哈希的类型(可作为key的类型)

  • 不是所有的类型都可以作为字典的key
  • 字典的本质是一个哈希表,哈希表的key的要求就是“可哈希的”,也就是可以使用hash()计算出一个哈希值
  • 不可变的对象一般就是“可哈希的”,可变的对象一般就是“不可哈希的”
  • 列表和字典都是“不可哈希的”
  • 字典、列表和元组都是Python中非常常用的内置类型,内部可以包含不同的元素(容器或者集合类)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全-jsp绕过

一、思路(这里给出jsp的WebShell样本) 1.1 加载字节码getshell <% page import"com.sun.org.apache.bcel.internal.util.ClassLoader" %> <html> <body> <h2>BCEL字节码的JSP Webshell</h2> <%String bcelCode "$$BCEL$$$l…

Java | Leetcode Java题解之第434题字符串中的单词数

题目&#xff1a; 题解&#xff1a; class Solution {public int countSegments(String s) {int segmentCount 0;for (int i 0; i < s.length(); i) {if ((i 0 || s.charAt(i - 1) ) && s.charAt(i) ! ) {segmentCount;}}return segmentCount;} }

loadrunner个人笔记

创建场景配置&#xff1a; 两个同时 去四&#xff1a;日志、时间、模拟、其他自动事务 加一&#xff1a;首选项 1、写脚本&#xff0c;沟通官方、文件打印扫描 MFI-sw.support.gsd.imsc.sda.globalopentext.com support.casemicrofocus.com 支持资源 | Micro Focus | OpenT…

Vue3:shallowRef与shallowReactive

目录 一.shallowRef 和 shallowReactive 1.shallowRef 2.shallowReactive 二.ref 和 reactive 1. ref 2. reactive 三.各自使用场景 1.shallowRef 2.shallowReactive 3.ref 4.reactive 四.shallowRef 使用 五.shallowReactive使用 六.效果 一.shallowRef 和 shal…

多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测(Matlab)

多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测 目录 多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 …

数据结构 ——— 数组 nums 包含了从 0 到 n 的所有整数,但是其中缺失了一个,请编写代码找出缺失的整数,并且在O(N)时间内完成

目录 题目要求 代码实现 方法1&#xff08;异或法&#xff09;&#xff1a; 异或算法的时间复杂度&#xff1a; 方法2&#xff08;等差数列公式&#xff09;&#xff1a; 等差数列公式的时间复杂度&#xff1a; 题目要求 整型数组 nums 包含了从 0 到 n 的所有整数&…

C#测试调用FreeSpire.PDFViewer浏览PDF文件

Free Spire.PDFViewer是商业版Spire.PDFViewer的社区版本&#xff0c;支持以控件形式打开并查看PDf文件&#xff0c;但由于是免费版本&#xff0c;存在使用限制&#xff0c;打开的PDF文档只显示前10页内容。如果日常操作的pdf文件都不超过10页&#xff0c;可以考虑使用Free Spi…

【车联网安全】车端网络攻击及检测的框架/模型

参考标准&#xff1a; 《汽车数据安全管理若干规定&#xff08;试行&#xff09;》ISO/SAE 21434《道路车辆 网络安全工程》威胁分析和风险评估&#xff08;TARA&#xff09;ISO/DIS 24089R155法规的国标转换&#xff1a;《汽车整车信息安全技术要求》&#xff08;UN R155&…

①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 型号 2路总线EIP网关 MS-A1-2021 4路总线EIP网关 MS-A1-2041 4路总线EIP网关&#xff08;双网口&am…

solidwork中查看装配体螺丝或零件

假设我的PETG打印件到了&#xff0c;想知道这个螺丝的型号&#xff0c;怎么办 解决办法&#xff1a; 第一步先看看有没有固定的字样 如果固定的话是不行的。需要这样做&#xff1a; 把这里给关了 接下来第二步&#xff0c;点击你想查看的螺丝 然后就会跳到零件图 可以看到直径…

【会议征稿通知】第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024) 2024 3rd International Conference on Image Processing, Computer Vision and Machine Learning 重要信息 大会官网&#xff1a;2024 3rd International Conference on Image Processing, Computer Vision…

逆向推理+ChatGPT,让论文更具说服力

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 使用ChatGPT辅助“逆向推理”技巧&#xff0c;可以显著提升论文的质量和说服力。逆向推理从结论出发&#xff0c;倒推所需的证据和论点&#xff0c;确保整个论证过程逻辑严密且无漏洞。…

每日论文2——用于锁相环应用的0.025%直流电流失配电荷泵

《A 0.025% DC Current Mismatch Charge Pump for PLL Applications 》2021 IEEE International Midwest Symposium on Circuits and Systems (MWSCAS) The Key Lab of micro-nano electronics and system integration of Xian city, Xian 本文结构主要不同是仅用了一个OPA&…

【Linux-基础IO】文件描述符重定向原理缓冲区

文件描述符 文件描述符的概念和原理 通过上述内容&#xff0c;我们知道使用 open 系统调用打开文件时&#xff0c;系统会返回一个文件描述符。这个描述符用于后续的文件操作。 在C语言中默认会打开三个输入输出流&#xff0c;分别是stdin&#xff0c;stdout&#xff0c;stde…

算法工程师重生之第十四天(找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树 )

参考文献 代码随想录 一、找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7提示: 二叉树的节…

打靶记录18——narak

靶机: https://download.vulnhub.com/ha/narak.ova 推荐使用 VM Ware 打开靶机 难度&#xff1a;中 目标&#xff1a;取得 root 权限 2 Flag 攻击方法&#xff1a; 主机发现端口扫描信息收集密码字典定制爆破密码Webdav 漏洞PUT 方法上传BF 语言解码MOTD 注入CVE-2021-3…

9月24日笔记

内网信息收集 本机基础信息收集 当通过web渗透或者其他方式活动服务器主机权限之后&#xff0c;需要以该主机作为跳板&#xff0c;对内网环境进行渗透&#xff0c;对于攻陷的第一台主机&#xff0c;其在内网中所处的网络位置、当前登录的用户、该用户有什么样的权限、其操作系…

Pinia从安装到使用

什么是Pinia 添加Pinia到vue项目 使用Pinia实现计数器案例 counter.js import {defineStore} from "pinia"; import {ref} from "vue";export const useCounterStore defineStore(coutner,()>{//定义数据&#xff08;state&#xff09;const count r…

C# winforms DataGridView 隐藏行 解决“与货币管理器的位置关联的行不能设置为不可见”

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

从角速度向量的角度理解姿态角速度和机体角速度的转换公式

一、什么是姿态角速度 这是我从《多旋翼飞行器设计和控制》上截取的关于欧拉角的定义。无人机的姿态角速度即偏航角、俯仰角、滚转角的一次导数&#xff0c;分别是、、。 二、什么是机体角速度 这是我在网上随便找的图&#xff0c;展示了机体坐标系。这个坐标系与飞机固定连接&…