新闻详情

新闻详情

首页 / 资讯中心 / 详情

CSDN21天学习挑战赛——Python数据结构学习笔记

发布时间:2026/9/30 6:42:30来源:尧图网络
CSDN21天学习挑战赛——Python数据结构学习笔记
​活动地址CSDN21天学习挑战赛一、列表listpython中列表是可变对象这是它区别于字符串、元组最重要的特点。列表是Python 语言核心的一部分。虽然名字叫列表但它实际上是以动态数组实现的。这意味着列表能够添加或删除元素还能分配或释放内存来自动调整存储空间。Python 列表可以包含任意元素因为Python 中一切皆为对象连函数也是对象。因此不同的数据类型可以混合存储在一个列表中。这个功能很强大但缺点是同时支持多种数据类型会导致数据存储得不是很紧凑。因此整个结构占据了更多的空间。1、python中列表的方法方法描述list.append(x)把一个元素添加到列表的结尾相当于 a[len(a):] [x]。list.extend(L)通过添加指定列表的所有元素来扩充列表相当于 a[len(a):] L。list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引例如 a.insert(0, x) 会插入到整个列表之前而 a.insert(len(a), x) 相当于 a.append(x) 。list.remove(x)删除列表中值为 x 的第一个元素。如果没有这样的元素就会返回一个错误。list.pop([i])从列表的指定位置移除元素并将其返回。如果没有指定索引a.pop()返回最后一个元素。元素随即从列表中被移除。方法中 i 两边的方括号表示这个参数是可选的而不是要求你输入一对方括号你会经常在 Python 库参考手册中遇到这样的标记。list.clear()移除列表中的所有项等于del a[:]。list.index(x)返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。list.count(x)返回 x 在列表中出现的次数。list.sort()对列表中的元素进行排序。list.reverse()倒排列表中的元素。list.copy()返回列表的浅复制等于a[:]。2、将列表当作堆栈使用栈限定仅在表尾进行插入和删除操作的线性表。栈是含有一组对象的容器支持快速后进先出LIFO的插入和删除操作。与列表或数组不同栈通常不允许随机访问所包含的对象。插入和删除操作通常称为入栈push和出栈pop。现实世界中与栈数据结构相似的是一叠盘子。新盘子会添加到栈的顶部。由于这些盘子非常宝贵且很重所以只能移动最上面的盘子后进先出。要到达栈中位置较低的盘子必须逐一移除最顶端的盘子。列表方法使得列表可以很方便的作为一个堆栈来使用堆栈作为特定的数据结构最先进入的元素最后一个被释放后进先出。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。 stack [3, 4, 5] stack.append(6) stack.append(7) stack [3, 4, 5, 6, 7] stack.pop() 7 stack [3, 4, 5, 6] stack.pop() 6 stack.pop() 5 stack [3, 4]3、将列表当作队列使用栈和队列相似都是线性的元素集合但元素的访问顺序不同。从队列删除元素时移除的是最先添加的项先进先出FIFO而栈是移除最近添加的项后进先出LIFO。把列表当做队列用只是在队列里第一加入的元素第一个取出来但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快然而在列表里插入或者从头部弹出速度却不快因为所有其他的元素都得一个一个地移动。 from collections import deque queue deque([Eric, John, Michael]) queue.append(Terry) # Terry arrives queue.append(Graham) # Graham arrives queue.popleft() # The first to arrive now leaves Eric queue.popleft() # The second to arrive now leaves John queue # Remaining queue in order of arrival deque([Michael, Terry, Graham])4、嵌套列表解析对列表进行嵌套3*4矩阵列表 matrix [ ... [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ... ]将3*4矩阵列表转化为4*3列表[[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]等价于 transposed [] for i in range(4): ... # the following 3 lines implement the nested listcomp ... transposed_row [] ... for row in matrix: ... transposed_row.append(row[i]) ... transposed.append(transposed_row) ... transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]5、del语句del 语句可以从一个列表中根据索引来删除一个元素而不是值来删除元素。这与使用 pop() 返回一个值不同。可以用 del 语句从列表中删除一个切割或清空整个列表我们以前介绍的方法是给该切割赋一个空列表。 a [-1, 1, 66.25, 333, 333, 1234.5] del a[0] a [1, 66.25, 333, 333, 1234.5] del a[2:4] a [1, 66.25, 1234.5] del a[:] a []三、元组tuplePython 的元组对象是不可变的。这意味着不能动态添加或删除元素元组中的所有元素都必须在创建时定义。就像列表一样元组可以包含任意数据类型的元素。这具有很强的灵活性但也意味着数据的打包密度要比固定类型的数组小。元组由若干逗号分割的值组成在输出时总是有括号便于正确表达嵌套结构 t 12345, 54321, hello! t[0] 12345 t (12345, 54321, hello!) # Tuples may be nested: ... u t, (1, 2, 3, 4, 5) u ((12345, 54321, hello!), (1, 2, 3, 4, 5))四、集合set集合含有一组不含重复元素的无序对象。集合可用来快速检查元素的包含性插入或删除值计算两个集合的并集或交集。可以用大括号({})创建集合。注意如果要创建一个空集合你必须用 set() 而不是 {} 后者创建一个空的字典。set是Pyhton中的内置集合实现set类型是可变对象能够动态插入和删除元素。示例 basket {apple, orange, apple, pear, orange, banana} print(basket) # 删除重复的 {orange, banana, pear, apple} orange in basket # 检测成员 True crabgrass in basket False # 以下演示了两个集合的操作 ... a set(abracadabra) b set(alacazam) a # a 中唯一的字母 {a, r, b, c, d} a - b # 在 a 中的字母但不在 b 中 {r, d, b} a | b # 在 a 或 b 中的字母 {a, c, r, d, b, m, z, l} a b # 在 a 和 b 中都有的字母 {a, c} a ^ b # 在 a 或 b 中的字母但不同时在 a 和 b 中 {r, d, b, m, z, l}五、字典在Python 中字典是核心数据结构。字典可以存储任意数量的对象每个对象都由唯一的字典键标识。字典通常也被称为映射、散列表、查找表或关联数组。字典能够高效查找、插入和删除任何与给定键关联的对象。字典是计算机科学中最常用且最重要的数据结构之一。序列是以连续的整数为索引与此不同的是字典以关键字为索引关键字可以是任意不可变类型通常用字符串或数值。理解字典的最佳方式是把它看做无序的键值对集合。在同一个字典之内关键字必须是互不相同。一对大括号创建一个空的字典{}。示例 tel {jack: 4098, sape: 4139} tel[guido] 4127 tel {sape: 4139, guido: 4127, jack: 4098} tel[jack] 4098 del tel[sape] tel[irv] 4127 tel {guido: 4127, irv: 4127, jack: 4098} list(tel.keys()) [irv, guido, jack] sorted(tel.keys()) [guido, irv, jack] guido in tel True jack not in tel False构造函数 dict() 直接从键值对元组列表中构建字典。如果有固定的模式列表推导式指定特定的键值对 dict([(sape, 4139), (guido, 4127), (jack, 4098)]) {sape: 4139, jack: 4098, guido: 4127}如果关键字只是简单的字符串使用关键字参数指定键值对有时候更方便 dict(sape4139, guido4127, jack4098) {sape: 4139, jack: 4098, guido: 4127}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从提示音到消息推送:拆解“buzz”背后的实时触达与传播机制 2026/9/30 8:33:03

从提示音到消息推送:拆解“buzz”背后的实时触达与传播机制

1. 从“buzz”这个词说起:它到底指什么 “buzz”这个标题看起来简单,甚至有点抽象,但恰恰是这种极简的词,背后往往藏着最丰富的可能性。我第一次看到这个标题的时候,脑子里蹦出来的第一反应是“嗡嗡声”——蜜蜂振翅、…

阅读更多 →
NX CAM二次开发:UF_SETUP_delete_setup删除Setup详解 2026/9/30 8:33:03

NX CAM二次开发:UF_SETUP_delete_setup删除Setup详解

做NX CAM二次开发的,谁都会碰到一个绕不开的问题:程序里动不动就要把加工设置(Setup)删掉重建。以前我一直在用NXOpen里的CAMSetupCollection去删,但后来项目里要求所有操作必须走UFUN老接口,才被迫把UF_SE…

阅读更多 →
TensorFlow真实定位:工业级部署契约与ABI工程实践 2026/9/30 8:33:03

TensorFlow真实定位:工业级部署契约与ABI工程实践

1. 这不是“又一个深度学习框架”——TensorFlow 的真实定位与误用重灾区很多人第一次听说 TensorFlow,是在某篇“2024年最值得学的AI框架”榜单里,和 PyTorch 并列排在前两位;也有人是在公司内部技术选型会上,听到架构师说“我们…

阅读更多 →
模型优化器实战:算子融合、量化与TensorRT部署调优指南 2026/9/30 8:33:03

模型优化器实战:算子融合、量化与TensorRT部署调优指南

1. 模型优化器到底在解决什么问题 第一次接触 Model-Optimizer 这个概念,是在一个推荐系统的排序模型上。当时线上推理延迟卡在 120ms 下不去,GPU 利用率却只有 30% 出头,显存倒是先爆了。排查了一圈发现,模型本身参数量并不夸张&…

阅读更多 →
Vue面试核心知识点全解析:从响应式原理到组件通信与性能优化 2026/9/30 8:33:03

Vue面试核心知识点全解析:从响应式原理到组件通信与性能优化

1. 追问到源码级别的响应式原理:闭着眼睛也要能画出来的图Vue面试题里,响应式原理几乎是必考题,不管你是面初级还是面高级,第一轮技术面大概率会从这里开始。大部分候选人能说出Object.defineProperty和Proxy的区别,也…

阅读更多 →
数字员工和智能体的区别是什么 2026/9/30 8:32:56

数字员工和智能体的区别是什么

数字员工和智能体的区别是什么 当下企业智能化转型浪潮中,AI 智能体、数字员工两个概念常常被混为一谈。不少企业上线通用智能体之后发现,虽然模型对话效果出色,但很难真正嵌入组织业务流程,安全管控、权责追溯、团队协同等现实难…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉