Python中四大核心数据结构(列表,元组,字典和集合)的完全解析

 更新时间:2025年10月24日 09:46:24   作者:道之极万物灭  
这篇文章主要为大家详细介绍了Python中四大核心数据结构的相关知识,即列表,元组,字典和集合,文中的示例代码讲解详细,有需要的小伙伴可以了解下

一、列表(List)—— 灵活的动态数组

1.1 基础操作全流程示例

# 创建-操作-输出完整演示
# 初始化商品列表
products = ["手机", "笔记本", "耳机", "鼠标"]

print("原始列表:", products)  # ['手机', '笔记本', '耳机', '鼠标']

# 索引访问与切片
print("首个商品:", products[0])      # 手机
print("最后两个商品:", products[-2:]) # ['耳机', '鼠标']

# 元素修改与扩展
products[1] = "游戏本"             # 修改元素
products.append("键盘")           # 追加元素
products.insert(2, "显示器")      # 插入元素

print("修改后列表:", products)    # ['手机', '游戏本', '显示器', '耳机', '鼠标', '键盘']

# 删除操作
removed_item = products.pop(3)    # 删除索引3的元素
print("被删除商品:", removed_item) # 耳机
print("当前列表:", products)      # ['手机', '游戏本', '显示器', '鼠标', '键盘']

1.2 核心方法详解

# 创建数字列表
nums = [3, 1, 4, 1, 5, 9]

# 排序与反转
nums.sort()                     # 升序排列 [1, 1, 3, 4, 5, 9]
nums.reverse()                  # 反转列表 [9, 5, 4, 3, 1, 1]

# 列表推导式
squares = [x**2 for x in nums if x > 3]
print("大数平方:", squares)     # [81, 25, 16]

# 其他实用方法
print("出现次数:", nums.count(1))  # 2
nums.clear()                    # 清空列表

二、元组(Tuple)—— 不可变数据容器

完整操作示例

# 定义-访问-解包全流程
# 创建坐标元组
point = (10, 20)

# 索引访问
print("X坐标:", point[0])    # 10
print("Y坐标:", point[1])    # 20

# 元组解包
x, y = point
print(f"坐标位置: ({x}, {y})")  # (10, 20)

# 类型转换示例
list_point = list(point)      # 转为列表可修改
list_point[0] += 5
new_point = tuple(list_point)
print("新坐标:", new_point)   # (15, 20)

# 函数返回多个值
def get_dimensions():
    return 1920, 1080

width, height = get_dimensions()
print(f"分辨率: {width}x{height}")

三、字典(Dict)—— 高效键值存储

3.1 完整操作流程

# 创建-更新-遍历完整示例
# 初始化学生信息
student = {
    "name": "张三",
    "age": 18,
    "courses": ["数学", "英语"]
}

# 添加新信息
student["gender"] = "男"
student["age"] = 19          # 修改年龄

# 安全获取值
score = student.get("score", 0)
print("默认分数:", score)    # 0

# 删除元素
removed = student.pop("courses")
print("已删除课程:", removed) # ['数学', '英语']

# 遍历字典
print("\n学生详细信息:")
for key, value in student.items():
    print(f"{key}: {value}")

"""
输出:
学生详细信息:
name: 张三
age: 19
gender: 男
"""

3.2 进阶方法应用

# 字典合并与推导式
grades = {"数学": 90, "英语": 85}
extra_grades = {"编程": 95, "物理": 88}

# 合并字典
grades.update(extra_grades)

# 字典推导式
passed = {subject: score for subject, score in grades.items() if score >= 85}
print("及格科目:", passed)  # {'数学':90, '英语':85, '编程':95, '物理':88}

# 键值反转
inverted_dict = {v: k for k, v in grades.items()}
print("分数对照:", inverted_dict)  # {90: '数学', 85: '英语', ...}

四、集合(Set)—— 唯一元素管理器

完整操作示例

# 创建-运算-方法全流程
# 初始化集合
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}

print("原始集合A:", A)  # {1,2,3,4}
print("原始集合B:", B)  # {3,4,5,6}

# 集合运算
print("并集:", A | B)   # {1,2,3,4,5,6}
print("差集:", A - B)   # {1,2}
print("对称差集:", A ^ B) # {1,2,5,6}

# 元素操作
A.add(5)                # 添加元素
A.discard(2)            # 安全删除
print("更新后A:", A)    # {1,3,4,5}

# 集合推导式
even_numbers = {x for x in range(10) if x%2 == 0}
print("偶数集合:", even_numbers)  # {0,2,4,6,8}

五、四大数据结构方法速查表

O(1) :操作耗时与数据量无关

O(n):操作耗时与数据量成正比

操作列表方法元组特性字典方法集合方法
添加元素append/insert不可变dict[key] = valueadd/update
删除元素pop/remove不可变pop/delremove/discard
排序sort()sorted()sorted(items)sorted()
反转reverse()需转换列表reversed()需转换列表
长度查询len()len()len()len()
包含检查ininin (keys)in
内存占用较高较低较高中等
时间复杂度查询O(n)查询O(n)查询O(1)查询O(1)

六、实战应用案例

数据清洗工具函数

def data_cleaner(raw_data):
    # 列表存储有效数据
    cleaned = []
    
    # 集合记录已处理项
    seen = set()
    
    # 字典统计频率
    counter = {}
    
    for item in raw_data:
        # 去重处理
        if item not in seen:
            cleaned.append(item)
            seen.add(item)
        
        # 统计频率
        counter[item] = counter.get(item, 0) + 1
    
    # 元组保存元信息
    meta = (len(raw_data), len(cleaned))
    
    return {
        "cleaned_data": cleaned,
        "frequency": counter,
        "metadata": meta
    }

# 测试数据
test_data = ["A", "B", "A", "C", "B", "D"]
result = data_cleaner(test_data)
print(result)
"""
输出:
{
    'cleaned_data': ['A', 'B', 'C', 'D'],
    'frequency': {'A':2, 'B':2, 'C':1, 'D':1},
    'metadata': (6, 4)
}
"""

最佳实践指南

数据结构选择原则

  • 需要保持顺序 → 列表/有序字典
  • 快速查找 → 字典/集合
  • 数据不可变 → 元组
  • 元素唯一性 → 集合

性能优化技巧

  • 列表在尾部操作的效率最高(append/pop)
  • 字典键应尽量使用不可变类型
  • 集合运算比手动去重效率更高

代码可读性建议

  • 使用类型提示:def process(items: list[str]) -> dict:
  • 复杂结构添加注释说明
  • 优先使用内置方法而非手动实现

常见陷阱规避

  • 避免在循环中修改列表长度
  • 字典键不存在时使用get()方法
  • 注意集合的无序特性

掌握这些核心数据结构的特性和使用场景,将显著提升Python编程效率。建议读者在实际开发中多尝试不同结构的组合应用,例如使用字典列表存储表格数据,或通过集合运算进行高效去重。

到此这篇关于Python中四大核心数据结构(列表,元组,字典和集合)的完全解析的文章就介绍到这了,更多相关Python数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    今天小编就为大家分享一篇在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python scrapy爬虫代码及填坑

    python scrapy爬虫代码及填坑

    这篇文章主要介绍了python scrapy爬虫代码及填坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python 批量修改/替换数据的实例

    python 批量修改/替换数据的实例

    今天小编就为大家分享一篇python 批量修改/替换数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Django中的静态文件管理过程解析

    Django中的静态文件管理过程解析

    这篇文章主要介绍了Django中的静态文件管理过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python局部变量与全局变量区别原理解析

    Python局部变量与全局变量区别原理解析

    这篇文章主要介绍了Python局部变量与全局变量区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • python pandas 时间日期的处理实现

    python pandas 时间日期的处理实现

    这篇文章主要介绍了python pandas 时间日期的处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 浅谈Python 字符串格式化输出(format/printf)

    浅谈Python 字符串格式化输出(format/printf)

    下面小编就为大家带来一篇浅谈Python 字符串格式化输出(format/printf)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • python如何提取英语pdf内容并翻译

    python如何提取英语pdf内容并翻译

    这篇文章主要为大家详细介绍了python如何提取英语pdf内容并翻译,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • win10安装tensorflow-gpu1.8.0详细完整步骤

    win10安装tensorflow-gpu1.8.0详细完整步骤

    这篇文章主要介绍了win10安装tensorflow-gpu1.8.0详细完整步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • python利用rsa库做公钥解密的方法教程

    python利用rsa库做公钥解密的方法教程

    RSA是一种公钥密码算法,RSA的密文是对代码明文的数字的 E 次方求mod N 的结果。下面这篇文章主要给大家介绍了关于python利用rsa库做公钥解密的方法教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12

最新评论