Python3数据结构

列表:

Python列表是可变的,这是它区别于字符串数组和元组的最重要的特点。列表可以修改,而字符串和元组不能。

 

以下是Python中列表的描述方法:

方法

描述

list.append(x)

将元素添加到列表结尾

list.extend(L)

通过添加指定列表的所有元素来扩充列表

list.insert(i,x)

在指定位置插入一个元素,第一个参数是准备插入到其前面的那个元素的索引

list.remove(x)

删除列表中值为x的第一个元素,如果没有这个元素会返回一个错误。

list.pop([i])

从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()会返回最后一个元素。元素随机从列表中被移除。

list.clear()

移除列表中所有项

list.index(x)

返回列表中第一个值为x元素的索引。如果没有匹配的元素就返回一个错误。

list.count(x)

返回x在列表中出现的次数

list.sort()

对列表中的元素进行排序

list.reverse()

倒排列表中的元素

list.copy()

返回列表的浅复制

 

 

 

类似于insert、remove、sort等修改列表的方法是没有返回值的。

将列表当作堆栈使用:

列表方法使得列表可以很方便的作为一个堆栈来说使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放。用gappend()方法可以把一个元素添加到堆栈顶。用不指定索引的pop()方法可以把一个元素从堆栈顶释放出来。

 

 

 

将列表当作队列使用,只是在队列里第一加入的元素第一个取出来,但是这样拿列表用作这样的目的效率不高。在列表的最后添加或弹出的元素速度快。然而在列表里插入或者从头部弹出速度却不快。(因为所有其他元素逗得一个一个移动)

 

 

 

列表推导式

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定判断条件创建子序列。

每个列表推导式都在for之后跟一个表达式,然后有0到多个for或if子句,返回结构是一个根据表达从其后的for和if上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

 

 

 

对序列中每个元素的逐一调用某方法

 

 

 

我们可以使用if子句作为过滤器

 

 

 

以下还有一些关于循环和其他技巧的演示:

 

 

 

列表推导式可以使用复杂表达式或嵌套函数

 

 

 

嵌套列表解析

Python的列表还可以嵌套

 

 

也可以使用以下方法实现:

 

 

del语句

使用del语句可以从一个列表中依索引而不是值来删除一个元素。这与使用pop()返回一个值不同,可以用del语句从列表中删除一个切割,或者情况整个列表

 

 

也可以使用del删除实体变量

del a

 

元组和序列

元组是由 若干逗号跟个的值

 

 元组在输出时总有括号的,以便于正确表达嵌套结构,在输入时可能有或者没有括号,不过括号通常是必须的(如果元组是更大的表达式的一部分)

 

集合

集合是一个无须不重复的集,基本功能包括关系测试和消除重复元素。

可以使用大括号{}创建集合。注意:如果要创建一个空集合,必须使用set()而不是{};后者创建一个空的字典。

 

 

集合也支持推导式:

字典

另一个非常常用的Python内建数据类型是字典。

序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或数值。

理解字典的最佳方式就是把它看作无序的键=>值对集合。同一个字典内,关键必须互不相同。

一堆大括号创建一个空的字典:{}

 

 

构造函数dict()直接从键值对元组列表中构建字典。如果有固定格式,列表推导式指定特定的键值对:

 

 

字典推到可以用来创建任意键和值的表达式词典:

 

 如果关键字只是简单的字符串,使用关键字参数指定键值对有时候会更方便:

 

 

遍历技巧

在字典遍历时,关键字和对应的值可以使用items()方法同时解读出来:

 

 

在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到:

 

 

同时遍历两个或更多的序列,可以使用zip()组合:

 

 

要反向遍历一个序列,首先指定这个序列,然后调用reversed()函数:

 

 

要按顺序遍历一个序列,使用sorted()函数返回一个已排序的序列,不修改原值:

 

转载于:https://www.cnblogs.com/wanghao-boke/p/11474390.html

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

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

相关文章

Python3输入输出

Python两种输出值的方式,表达式语句和print()函数。 第三种方式是使用文件对象的write()方法,标准输出文件可以用sys.stdout的引用。 如果你希望输出的形式更加多样,可以使用str.fomat()函数来格式化输出值。 如果你希望将输出的值转化成字符…

Python3正则表达式

正则表达式是一个特殊的字符序列,他能帮助你方便的检查一个字符串是否与某种模式匹配。re.match函数 re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回一个none。 函数语法: re.match(pat…

signal()函数

函数原型 void (*signal(int sig,void(*func)(int)))(int); 指定使用sig指定的信号编号处理信号的方法。参数func指定程序可以处理信号的三种方式之一: l 默认处理(SIG_DFL): 信号由该特定信号的默认动作处理l 忽略信号(SIG_IGN&a…

【C++学习之路】第一章——C++核心方法总论

1 C核心方法总论 1.1 核心思想 通过实际项目来学习编程,更高效掌握编程规则,以及明白各种语法规则的实际应用。 实验思想:任何C的参考资料都不可能覆盖你遇到的所有问题,这个时候,最好的办法就是,编辑代…

【学会如何学习系列】从婴儿到大学——学习的本质从未改变过

从婴儿到大学——学习的本质从未改变过 从我们出生一直到现在,其实,学习的本质从来都没有改变过,并且,婴儿时期的我们,是学习能力最强的时候,随着我们不断长大,外界的诱惑越来越多,…

【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模

2 Verilog HDL的设计方法学——层次建模 重要的思想: 在语文教学中,应该先掌握核心方法论,再用正确的方法论去做题目,这样能够逐渐加深对于方法论的理解,做题的速度和准确率也会越来越高。在Verilog HDL中&#xff0c…

【Verilog HDL】第四章 模块的端口连接规则——污水处理模型

先放上连接规则的简图,再详细解释 1. 构建模型——污水处理之流水模型 我们先将上述结构构件一个简单模型,以帮助我们理解。 污水:输入数据净水:输出数据双向数据暂不讨论,取输入和输出的交集即可污水处理厂&…

【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论

从左到右,从上到下 先搞定缓冲/非门,再写与/或门 1. 实例解读 先以四选一数据选择器进行说明 对于数字逻辑的部分不再说明,直接进行逻辑电路图到Verilog门级建模的人工翻译过程的描述。 1.1 端口和线网分析 确定输入/输出端口 输入端口 …

【Verilog HDL】语句的并发执行

1. 实践得到的启发 先从一个简单的现象得出结论,Verilog语句是并发执行的! 同时,这也是**$monitor系统任务为全局有效**的一个重要支持因素,如果没有并发,它是完不成这项功能的实现的。 众所周知,高级语…

【数字逻辑】第四章 组合逻辑电路:端口设计 端口拓展的方法

1. 端口设计的方法 1.1 数据选择器 以四选一数据选择器为例,需要的不同接口类型为 输入端口 数据输入端口地址输入端口使能端(控制与拓展) 输出端口 数据输出端口 2. 端口拓展的方法——层次建模思想 2.0 两个拓展方向 2.0.1 “数组型…

【Verilog HDL】第三章 reg和net及其一组类型的区别——充分运用实验思维

0 确定问题的讨论层级与范围 本文讨论的层次是 数字逻辑与Verilog HDL语言 讨论的范围是: 数据存储而不是讨论逻辑 1 线网类型 1.1 wire类型 这个暂时没什么好说的,一般常用的就是wire类型,需要注意的是: 默认是标量&…

【C/C++ 汇编语言 Verilog】越界截断——数据越界问题的多角度分析

0 前言 0.1 讨论层级和范围 讨论层级 计算机底层:硬件层次与汇编指令层次信息与二进制位 讨论范围 信息的存储与运算在汇编语言与Verilog HDL中的联系与区别事实上,数据越界截断问题,在计算机体系的任何层次,都可能发生&#xf…

【VS C++ 2010】查看内存的方法详解

1 示例代码 对于以下代码&#xff1a; int main() {int a 100010001000;int b 100;cout << "a " << a << " " << &a << endl;cout << "b " << b << " " << &b…

【汇编语言】上机实验 win7/8/10 64位系统 进入32位DOS模式 实现dubug/edit/masm/link功能

1 软件下载和安装 下载并安装DOSBox软件&#xff0c;注意&#xff0c;不要装在C盘上&#xff0c;装在其他盘上 【备注】软件直接百度搜索即可下载Debug.exe文件 【备注】百度搜索“Debug 64位 下载” 对于下载后得到的debug.exe文件 将这个文件拷贝到磁盘根目录下&#xff0c…

【数字逻辑 Verilog】全面剖析数据选择器——从基础到拓展,从理论到设计的实现,从表面到本质

0 前言 0.1 使用环境 EDA工具&#xff1a;Vivado 2017.4硬件描述语言&#xff1a;Verilog HDL 0.2 涉及知识 数字逻辑Verilog 1 基础模块&#xff1a;一位四选一数据选择器 1.1 设计部分&#xff1a;层次建模 1.1.1 需求分析 设计一个一位的四选一数据选择器&#xff0…

【计算机网络】手动配置hosts文件解决使用GitHub和Coursera网站加载慢/卡的问题

目录0 前言1 打开hosts1.1 以管理员身份运行记事本1.2 打开hosts2 找到实际地址2.1 打开cmd2.2 找到网址3 替换地址3.1 修改hosts文件3.2 刷新4 后续内容的完善0 前言 本文是针对纯小白读者&#xff0c;没有涉及到任何的专业知识&#xff0c;你只需要按照步骤操作即可。 同时…

【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用

0 前言 你应该知道8086CPU的物理地址形成方式及其原理&#xff0c;才能完成本文的学习。 1 内存的分段 对于内存&#xff0c;人们人为地将其划分为一段一段的&#xff0c;比如代码段和数据段等&#xff0c;特别注意&#xff0c;这是人为划分的结果&#xff0c;方面人类使用&…

【计算机组成原理 数字逻辑 Verilog】32位加法器的实现:支持整数的加减运算

目录0 前言0.1 使用环境0.2 知识点0.3 注意事项1 建模&#xff1a;1位加法器1.1 构建基础模型1.1.1 一位加法器1.1.1.1 科技黑箱&#xff1a;外部端口与功能1.1.1.2 揭秘黑箱&#xff1a;内部结构与模块1.1.2 从顶层模块提取低层模块&#xff1a;取反功能选择器1.1.2.1 科技黑箱…

【Verilog HDL】门级描述 / 数据流描述 / 行为级描述——通过四选一多路选择器,实现对于不同层级描述方式的整体性认知

目录0 前言1 输出端口的设计1.1 门级描述和数据流描述1.2 行为级描述2 三种描述方式的整体架构2.1 门级描述2.2 数据流描述2.3 行为级描述2.4 补充&#xff1a;独立的语句2.5 小结3 理解三种描述方式的本质3.1 门级描述3.2 数据流描述3.3 行为级描述4 理解不同抽象层级描述方式…

【汇编语言】汇编实验IDE(集成开发环境):RadASM的安装和使用说明

0 前言 本文适合8086CPU的指令集。 对于重要的专业基础课程&#xff0c;汇编语言&#xff0c;做实验是必不可少的&#xff0c;但是由于汇编语言本身的缺陷&#xff0c;现代计算机并不能直接运行汇编语言程序&#xff0c;因此&#xff0c;一般老师会要求我们 使用虚拟机&…