news 2026/5/26 22:02:23

数据结构算法——python数据结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构算法——python数据结构

python数据结构

常用数据结构

字符串

s = "hello python" # 基础操作 print(s[0]) # 索引 print(s[1:5]) # 切片 print(len(s)) # 长度 print(s.strip()) # 去空格 print(s.split(" ")) # 分割 print(s.upper()) # 大写 print(s.lower()) # 小写 # 遍历 for char in s: print("字符:", char)

元组tuple

t = (1, 2, 3, "a", "b") # 基础操作 print(t[0]) print(t.count(2)) print(t.index("a")) print(len(t)) # 拆包 a, b, c = (1, 2, 3) # 遍历 for item in t: print("元组元素:", item)

列表list

lst = [10, 20, 30, 40] # 增删改查 lst.append(50) lst.pop() lst[1] = 15 lst.insert(0, 0) # 排序 lst.sort() # 遍历 for num in lst: print("列表元素:", num) # 带下标遍历 for idx, num in enumerate(lst): print(idx, num)

stack = [1, 2, 3] # 入栈、出栈 stack.append(4) stack.pop() stack[-1] len(stack) # 遍历 for val in stack: print("栈元素:", val)

队列

from collections import deque q = deque([1, 2, 3]) # 用list初始化 # 入队、出队 q.append(4) q.popleft() q[0] len(q) # 遍历 for val in q: print("队列元素:", val)

双向队列

from collections import deque dq = deque([1, 2, 3]) # 两端操作 dq.append(4) # 右侧入队 dq.appendleft(0) # 左侧入队 dq.pop() # 右侧出队 dq.popleft() # 左侧出队 len(dq) # 遍历 for val in dq: print("双向队列元素:", val)

优先队列

import heapq pq = [] # 入堆 heapq.heappush(pq, 3) heapq.heappush(pq, 1) heapq.heappush(pq, 2) # 出堆 heapq.heappop(pq) # 遍历(堆结构遍历,不保证有序) for val in pq: print("优先队列内部元素:", val) # 已有列表初始化最小堆 nums = [5, 2, 8, 1, 3, 7, 4] pq = heapq.heapify(nums) # 堆顶 print(nums[0]) # 从小到大的顺序 sorted_nums = [] while nums: sorted_nums .append(heapq.heappop(nums)) # 实际应用:找前 K 个最小的元素 nums = [9, 3, 7, 1, 5, 8, 2, 6, 4] # 返回最小的 K 个元素 ns = heapq.nsmallest(3, nums) # 返回最大的 K 个元素 nl = heapq.nlargest(3, nums)

字典

d = {"name": "小明", "age": 18, "city": "北京"} # 增删改查 d["gender"] = "男" d["age"] = 20 del d["city"] d["city"] len(d) print("name" in d) # 遍历键 for k in d.keys(): print("键:", k) # 遍历值 for v in d.values(): print("值:", v) # 遍历键值对 for k, v in d.items(): print(k, ":", v) # 频率统计 text = "hello world" freq = {} for ch in text: # 如果 ch 不在字典中,get 返回 0,加 1 后就是 1 freq[ch] = freq.get(ch, 0) + 1

集合

# 直接创建 s = {1, 2, 3, 4} # 列表创建(自动去重) nums = [1, 2, 2, 3, 3, 3] sl = set(nums) # 增删 s.add(5) s.discard(2) s.remove(2) # 不存在会报错 # 集合运算 a = {1,2,3} b = {3,4,5} print(a & b) # 交集 print(a | b) # 并集 print(a - b) # 差集 # 遍历 for val in s: print("集合元素:", val)
数据结构符号 / 实现可变性核心操作遍历方式
字符串""str不可变索引、切片、split、strip、replacefor c in s
元组()tuple不可变索引、count、indexfor item in t
列表[]list可变append、pop、insert、sort、reversefor item in lst
list可变append、popfor val in stack
队列deque可变append、popleftfor val in q
双向队列deque可变append、appendleft、pop、popleftfor val in dq
优先队列heapq可变heappush、heappopfor val in pq
字典{}dict可变[key]、get、keys、items、infor k,v in d.items()
集合{}set可变add、discard、remove、交并差、infor val in s
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 22:01:12

从素数定义到欧拉筛,一步搞定数论基础之素数

什么是素数想搞定数论基础?那素数与欧拉筛是绕不开的第一道关!本文从素数的本质定义出发,逐步拆解到欧拉筛的核心逻辑,看完就能掌握两种素数筛选方法,尤其适合算法入门/刷题补基础的同学。什么是素数首先,我…

作者头像 李华
网站建设 2026/5/23 1:49:45

AI 基础知识十三 Transformer注意力机制(Attention)

注意力机制Transformer 的核心是自注意力与多头注意力,让序列每个位置都能动态关注全局相关信息,并行捕捉长程依赖。自注意力公式多头注意力公式计算步骤参照论文说明1. Q、 K矩阵相乘2. 缩放处理3. 加掩码处理 是可选项4. Softmax 归一化指数函数5. 与…

作者头像 李华
网站建设 2026/5/23 1:49:43

Qwen3-14B私有部署案例:电商客服话术生成与情感倾向优化实践

Qwen3-14B私有部署案例:电商客服话术生成与情感倾向优化实践 1. 项目背景与需求分析 电商客服每天需要处理大量重复性问题,传统人工回复效率低下且难以保证一致性。我们基于Qwen3-14B模型构建了智能客服话术生成系统,主要解决以下痛点&…

作者头像 李华
网站建设 2026/5/23 1:49:44

突破多模态开发进阶三大瓶颈

随着2026年多模态技术的普及,越来越多开发者从“API调用”入门,却在进阶过程中陷入瓶颈:调用公共API有额度限制、生成效果不符合场景需求、本地化部署卡顿报错、模型微调无从下手……这些问题,成为开发者从“会用”到“精通”的最…

作者头像 李华
网站建设 2026/5/23 1:49:40

【洛谷P1000】

# 【题解】洛谷 P1000 超级玛丽游戏 ## 题目链接 [P1000 超级玛丽游戏](https://www.luogu.com.cn/problem/P1000)## 题目描述 本题要求你输出一个超级玛丽的图案,只需要按照题目给出的样例原样输出即可。## 输入格式 无## 输出格式 题目给出的超级玛丽图案。## 样例…

作者头像 李华
网站建设 2026/5/23 1:50:49

javaweb数字化高校宿舍报修出入登记调换宿舍管理系统的实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术实现要点扩展性设计项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 宿舍报修管理 学生在线提交报修申请&am…

作者头像 李华