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

《Python列表和元组:从入门到花式操作指南》

坚持用 清晰易懂的图解 + 代码语言,让每个知识点变得简单!
🚀呆头个人主页详情
🌱 呆头个人Gitee代码仓库
📌 呆头详细专栏系列
座右铭: “不患无位,患所以立。”
在这里插入图片描述

Python列表和元组:从入门到花式操作指南

  • 前言
  • 目录
    • 1. 初识列表与元组
    • 2. 列表的十八般武艺
      • 2.1 创建与访问
      • 2.2 切片操作
      • 2.3 修改与增删元素
      • 2.4 查找与连接
    • 3. 元组的特殊技能
    • 4. 性能与选择对比
    • 5. 可视化图解
      • 图1:列表内存结构图(classDiagram)
      • 图2:元组VS列表操作流程图(flowchart)
      • 图3:操作时间复杂度对比(pie)
    • 6. 总结
    • 7. 参考资料

前言

🔥 “灵根检测发现:阁下竟是万中无一的编程奇才!”

这是一个用修仙世界观解构Python学习的硬核专栏:

  • 练气期:变量/循环/函数(基础心法)
  • 筑基期:面向对象/异常处理(护体罡气)
  • 金丹期:爬虫/数据分析(神通初成)
  • 元婴期:Django/机器学习(开辟紫府)

✍️ 你将获得:
✅ 每章配套「渡劫雷法」(实战项目)
✅ 避免走火入魔的「心魔警示」(避坑指南)
✅ 飞升大能的「神识传承」(大佬代码赏析)

“三千大道,Py为尊。本座在此布道,助你斩尽BUG,证道代码金仙!”

(正文开始👇)


目录

1. 初识列表与元组

在Python中,列表(list)和元组(tuple)都是有序集合数据类型,但它们的核心区别在于:

  • 列表是可变对象(创建后可以修改)
  • 元组是不可变对象(创建后不能修改)
# 创建示例
my_list = [1, 2, 'Python']  # 方括号表示列表
my_tuple = (3, 4, 'Code')   # 圆括号表示元组

2. 列表的十八般武艺

2.1 创建与访问

# 创建方式大全
empty_list = []
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]# 访问元素(索引从0开始)
print(numbers[0])  # 输出: 1
print(mixed[-1])   # 输出: True (负索引表示倒数)

2.2 切片操作

# 切片语法:[start:end:step]
letters = ['a', 'b', 'c', 'd', 'e']
print(letters[1:4])    # 输出: ['b', 'c', 'd']
print(letters[::2])    # 输出: ['a', 'c', 'e']
print(letters[::-1])   # 输出: ['e', 'd', 'c', 'b', 'a'] (反转列表)

2.3 修改与增删元素

# 修改元素
numbers[2] = 99  # [1, 2, 99, 4, 5]# 添加元素
numbers.append(6)       # 末尾添加 → [1, 2, 99, 4, 5, 6]
numbers.insert(2, 1.5)  # 指定位置插入 → [1, 2, 1.5, 99, 4, 5, 6]# 删除元素
del numbers[3]         # 删除索引3 → [1, 2, 1.5, 4, 5, 6]
numbers.remove(1.5)    # 删除特定值 → [1, 2, 4, 5, 6]
popped = numbers.pop() # 弹出末尾 → popped=6, numbers=[1, 2, 4, 5]

2.4 查找与连接

# 查找操作
nums = [10, 20, 30, 40, 50]
print(30 in nums)      # 输出: True
print(nums.index(40))  # 输出: 3# 列表连接
list1 = [1, 2]
list2 = [3, 4]
combined = list1 + list2  # [1, 2, 3, 4]
list1.extend(list2)      # list1变为[1, 2, 3, 4]

3. 元组的特殊技能

虽然元组不可变,但在这些场景下特别有用:

  • 作为字典键(因为不可变)
  • 函数返回多个值时
  • 保证数据不被意外修改
# 元组操作
point = (3, 4)
x, y = point  # 解包赋值
print(point[1])  # 输出: 4# 单元素元组需要加逗号
single = (42,)  # 注意逗号
not_a_tuple = (42)  # 这只是整数42

4. 性能与选择对比

特性列表(list)元组(tuple)
可变性✔️ 可变❌ 不可变
内存占用较大较小
迭代速度较慢较快
适用场景动态数据固定数据
能否作为字典键❌ 不能✔️ 能

5. 可视化图解

图1:列表内存结构图(classDiagram)

在这里插入图片描述

图2:元组VS列表操作流程图(flowchart)

Yes
No
Yes
No
开始
需要修改数据?
使用列表
需要字典键或性能敏感?
使用元组
两者皆可

图3:操作时间复杂度对比(pie)

20%20%30%30%列表操作时间复杂度索引访问 O(1)append O(1)insert O(n)查找 in O(n)

6. 总结

在实际开发中,我的经验法则是:能用元组就不用列表。这不仅因为元组更轻量、更安全,更是对程序可预测性的一种保障。特别是在多线程环境下,不可变对象就是天然的线程安全保证。

但列表的那些花式操作确实让人欲罢不能。记得有次我用列表切片[::-1]实现字符串反转时,旁边Java同事投来羡慕的眼神。Python的这种"瑞士军刀"式的设计哲学,正是它吸引我的地方。

最后分享一个真实案例:在开发电商系统时,我用元组存储商品规格(颜色、尺寸等),用列表存储用户购物车条目。这样既保证了规格不可篡改,又允许购物车动态增减。这种"各司其职"的设计,让代码既健壮又灵活。


7. 参考资料

  1. Python官方文档-数据结构
  2. Fluent Python - Luciano Ramalho
  3. Python性能优化指南
  4. Real Python列表教程
  5. Python Cookbook第3版

#Python #数据结构 #列表 #元组 #编程技巧


📢 如果你也喜欢这种"不呆头"的技术风格:

👁️ 【关注】 看一个非典型程序员如何用野路子解决正经问题
👍 【点赞】 给"不写八股文"的技术分享一点鼓励
🔖 【收藏】 把这些"奇怪但有用"的代码技巧打包带走
💬 【评论】 来聊聊——你遇到过最"呆头"的 Bug 是啥?
🗳️ 【投票】 您的投票是支持我前行的动力

技术没有标准答案,让我们一起用最有趣的方式,写出最靠谱的代码! 🎮💻

http://www.xdnf.cn/news/17802.html

相关文章:

  • 做亚马逊广告,有哪些提高效率的工具
  • sqli-labs通关笔记-第49关 GET字符型order by盲注(单引号闭合 手工注入+脚本注入两种方法)
  • CAS学习6:cas免登录时 iframe 跨域和TGC丢失问题处理
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.15
  • 面试经典150题[004]:删除有序数组中的重复项 II(LeetCode 80)
  • 《R for Data Science (2e)》免费中文翻译 (第4章) --- Workflow: code style
  • 网络安全蓝队常用工具全景与实战指南
  • 【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
  • 【系统安装】虚拟机中安装win10IOT企业版系统记录
  • 【软考中级网络工程师】知识点之入侵检测深度剖析
  • Elasticsearch:如何使用 Qwen3 来做向量搜索
  • STM32学习笔记11-通信协议-串口基本发送与接收
  • uni-app 小程序跳转小程序
  • 初识c语言————缓冲区字符滞留
  • Cookie、Session、Token详解
  • 【嵌入式C语言】四
  • vscode使用keil5出现变量跳转不了
  • CTFShow PWN入门---Kernel PWN 356-360 [持续更新]
  • OpenCV图像平滑处理方法详解
  • 什么是主成分分析(PCA)和数据降维
  • Serverless 架构核心解析与应用实践
  • IPTV系统:开启视听与管理的全新篇章
  • redis中分布式锁的应用
  • 玩转Docker | 使用Docker部署JSON格式化工具ZJSON
  • 【论文阅读】基于多变量CNN模型的可穿戴外骨骼机器人人体运动活动识别
  • 计算机视觉--opencv(代码详细教程)(二)
  • Webpack Plugin 深度解析:从原理到实战开发指南
  • 【漏洞复现】WinRAR 目录穿越漏洞(CVE-2025-8088)
  • 服务器的安全检测和防御技术
  • Uniapp 条件编译详解