当前位置: 首页 > news >正文

数据结构基础知识补充

一、列表(List)

✅ 定义与特点:

a = [1, "str", True]

  • 有序、可变

  • 支持增删改查(append, remove, insert, pop 等)

  • 元素类型不限制

  • 底层为动态数组

🧠 实际开发例子:

  1. 批量存储用户输入

    user_inputs = [] for _ in range(3): user_inputs.append(input("Enter a value: "))

  2. 处理 CSV 数据行

    import csv with open("data.csv") as f: reader = csv.reader(f) rows = [row for row in reader]

👍 优点:

  • 灵活,能存储任意类型

  • 操作丰富,语法简洁

👎 缺点:

  • 查找慢(O(n))

  • 占内存比 array 大

  • 不适合大规模数值计算(推荐用 numpy)


二、元组(Tuple)

✅ 定义与特点:

b = (1, "data", 3.14)

  • 有序、不可变

  • 支持索引访问

  • 可作为 dict 的键

🧠 实际开发例子:

  1. 函数多返回值

    def get_stats(): return (200, "OK") status_code, message = get_stats()

  2. 缓存系统中的复合键

    cache = {} user_id, item_id = 42, 100 cache[(user_id, item_id)] = "cached_result"

👍 优点:

  • 数据安全,不易被修改

  • 可用于 dict key、set 元素

👎 缺点:

  • 无法修改,需整体替换

  • 可读性差于命名元组(建议用 namedtuple


三、字典(Dict / 哈希表)

✅ 定义与特点:

c = {"name": "Alice", "age": 30}

  • 无序(Python 3.7+ 实际有序)

  • 键必须可哈希(如 str、int、tuple)

  • 查找速度快,O(1)

🧠 实际开发例子:

  1. JSON 数据处理

    import json user_data = json.loads('{"id": 1, "name": "Tom"}')

  2. 配置文件解析

    config = {"host": "localhost", "port": 8080}

  3. 计数器功能

    counts = {} for item in ['a', 'b', 'a']: counts[item] = counts.get(item, 0) + 1

👍 优点:

  • 快速键值映射

  • 语义清晰(键名表达含义)

👎 缺点:

  • 键要求不可变对象

  • 内存占用较大


四、数组(array.array)

✅ 定义与特点:

import array d = array.array('i', [1, 2, 3])

  • 元素类型统一(如整数 'i'

  • 占用内存少,操作快

  • 不支持混合类型

🧠 实际开发例子:

  1. 从传感器读取大量整数数据

    import array sensor_data = array.array('h') # short 类型 sensor_data.frombytes(serial_input.read(64))

  2. 高效存储图片像素值

    grayscale_pixels = array.array('B', [0, 128, 255])

👍 优点:

  • 节省内存(比 list 更轻)

  • 性能高于 list(但低于 NumPy)

👎 缺点:

  • 类型固定

  • 使用不如 list 灵活


五、哈希表(由 Dict 实现)

✅ 定义与特点:

  • 哈希表并非 Python 原语,但 dict 是其直接实现

  • 基于哈希函数进行快速键值定位

🧠 实际开发例子:

  1. URL 缓存系统

    cache = {} def get_page(url): if url in cache: return cache[url] response = fetch_url(url) cache[url] = response return response

  2. 计数和分组操作

    from collections import defaultdict groups = defaultdict(list) for name, dept in employees: groups[dept].append(name)

👍 优点:

  • 极快的查找和插入(O(1))

  • 基础结构强大,支持多种映射用途

👎 缺点:

  • 哈希冲突需处理

  • 键必须是可哈希对象


六、对比总结表格:

特性listtupledictarrayhash table
可变性✅(但元素类型固定)✅(底层实现)
有序性✅(3.7+)
元素类型任意任意键值任意限定(如整数)限定键需可哈希
查找性能O(n)O(n)O(1)O(n)O(1)
内存效率一般较高较高
适用场景一般集合固定数据映射存储数值密集型快速检索

🔚 建议使用场景小结:

任务类型推荐结构原因
有序集合,需要频繁修改list灵活易用
多值返回,不可修改tuple安全性高,支持解构
需要键值存储,频繁查找dict查找快,结构清晰
数值密集型,如图像、传感器数据array / numpy节省内存,性能好
快速索引,缓存优化dict (哈希表)支持 O(1) 访问,广泛用于缓存等高性能应用

相关文章:

  • BGP配置命令详细框架
  • 清除谷歌浏览器中的“您的浏览器由所属组织/贵单位管理”
  • Vuex Actions: 异步操作
  • C 语言学习笔记(指针6)
  • vue + ant-design + xlsx 实现表格数据导出
  • jsAPI:Intl.DateTimeFormat 属性含义
  • 原子操作(Atomic Operations)在SOC中的应用场景
  • LINUX安装运行jeelowcode前端项目
  • c++进阶——智能指针
  • 中建海龙携MiC技术亮相双博会 引领模块化建筑新潮流
  • 【监控】Blackbox Exporter 黑盒监控
  • 第12次08: 省市县区三级联动收货地址
  • 华为OD机试真题——区间交集(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 两个Ubuntu机器(内网)免密登录设置
  • 嵌入式学习Day28
  • 移动端H5拍照直传不落地方案
  • 2025.5.26 关于后续更新内容的通知
  • 语音识别技术在人工智能中的应用
  • 【C++进阶篇】初识哈希
  • 公共字段自动填充功能实现【springboot】
  • 做淘宝浏览单的网站/方象科技专注于什么领域
  • 太原本地网站搭建公司/网站建设7个基本流程
  • 广州 美容 公司 网站建设/免费创建网站
  • 保定网站建设平台分析/线上推广的方法
  • 礼泉做网站/百度升级最新版本下载安装
  • 第三方平台推广/seo管理系统创作