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

系统地总结一下Python中关于“遍历”的知识点

来系统地总结一下Python中关于“遍历”(也叫“迭代”)的核心知识点。

一、 核心概念:迭代 (Iteration)

迭代是编程中最基本的操作之一,指的是重复地对一个数据集合中的每一个元素执行相同的操作。在Python中,能被 for 循环遍历的对象都称为可迭代对象 (Iterable),例如列表、字符串、字典、元组等。


二、 最基础的遍历工具:for 循环

这是Python中最常用、最强大的遍历语法。

基本结构:

for 变量 in 可迭代对象:# 对每个变量执行的代码块

示例:

numbers = [1, 2, 3, 4]
for num in numbers:print(num * 2)

三、 遍历不同数据结构的技巧

不同的数据结构有不同的遍历方式和特点。

1. 序列类型 (List, Tuple, String)

它们的遍历方式最直接,都是按顺序逐个访问元素。

  • 列表 (List) / 元组 (Tuple):
    fruits = ['apple', 'banana', 'cherry']
    for fruit in fruits:print(fruit)
    
  • 字符串 (String):
    message = "Hello"
    for char in message:print(char)
    
2. 映射类型 (Dictionary)

字典的遍历非常灵活,可以分别针对键、值或键值对进行。

  • 遍历键 (Keys) - 默认方式
    grades = {'数学': 95, '语文': 89}
    for subject in grades:  # 等同于 for subject in grades.keys():print(f"科目: {subject}, 分数: {grades[subject]}")
    
  • 只遍历值 (Values)
    for score in grades.values():print(f"分数: {score}")
    
  • 同时遍历键和值 (Key-Value Pairs) - 推荐方式
    这是最高效、最直观的方式。
    for subject, score in grades.items():print(f"科目: {subject}, 分数: {score}")
    
3. 集合类型 (Set)

集合用于存储不重复的元素,遍历时会访问其中的每一个元素,但不保证顺序(在较新的Python版本中通常是插入顺序,但不应依赖此特性)。

unique_numbers = {1, 3, 2, 3, 1}
for num in unique_numbers:print(num)  # 会输出 1, 2, 3 (顺序不定)

四、 增强遍历的“神器”:内置函数

Python提供了几个非常有用的内置函数,让遍历变得更加强大。

1. enumerate() - 同时获取索引和值

当你需要一边遍历元素,一边知道当前元素是第几个时,用 enumerate()

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits, start=1): # start=1 让索引从1开始print(f"第{index}个水果是: {fruit}")
2. zip() - 并行遍历多个序列

当你有多个列表,想把它们对应位置的元素配对在一起遍历时,用 zip()。循环次数由最短的那个序列决定。

names = ['张三', '李四', '王五']
scores = [95, 89, 92]
for name, score in zip(names, scores):print(f"{name}的成绩是: {score}")
3. range() - 遍历数字序列

当你需要循环固定的次数,或者需要按索引遍历时,range() 是最佳选择。

# 循环5次 (从0到4)
for i in range(5):print(i)# 按索引遍历列表 (不推荐,enumerate更好)
items = [10, 20, 30]
for i in range(len(items)):print(f"索引{i}的值是{items[i]}")

五、 控制循环流程

在循环内部,有时需要提前退出或跳过某些元素。

  • break:完全终止并跳出整个循环
    for num in [1, 2, 3, 4, 5]:if num == 4:break  # 当num等于4时,循环立即停止print(num) # 输出 1, 2, 3
    
  • continue:跳过本次循环的剩余代码,直接进入下一次循环。
    for num in [1, 2, 3, 4, 5]:if num == 3:continue # 当num等于3时,跳过本次print,继续下一次循环print(num) # 输出 1, 2, 4, 5
    

六、 更 Pythonic 的遍历方式:推导式 (Comprehensions)

推导式是一种非常强大和简洁的语法,可以在遍历一个序列的同时,生成一个新的序列。

  • 列表推导式 (List Comprehension):

    # 从一个列表中,创建一个只包含偶数并平方的新列表
    numbers = [1, 2, 3, 4, 5]
    squared_evens = [n**2 for n in numbers if n % 2 == 0]
    # 结果: [4, 16]
    
  • 字典推导式 (Dictionary Comprehension):

    # 快速创建一个键是数字,值是其平方的字典
    square_dict = {x: x*x for x in range(5)}
    # 结果: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
    

总结表格

遍历需求推荐方法语法示例
遍历列表/元组/字符串直接 for 循环for element in my_list:
遍历字典的键和值.items()for key, value in my_dict.items():
遍历时需要索引enumerate()for index, value in enumerate(my_list):
并行遍历多个列表zip()for item1, item2 in zip(list1, list2):
循环固定次数range()for i in range(10):
边遍历边创建新列表列表推导式[x*2 for x in old_list]

掌握了以上这些知识点,就能够应对Python中绝大部分的遍历场景了。


文章转载自:

http://MXXmHewa.rrdch.cn
http://xVMihfAM.rrdch.cn
http://IlDntoOR.rrdch.cn
http://fZzOjFAq.rrdch.cn
http://j9pERrOJ.rrdch.cn
http://06Q95pFD.rrdch.cn
http://wrTXLYSx.rrdch.cn
http://Ut6BuCN3.rrdch.cn
http://mB78zczb.rrdch.cn
http://VBOKeRAt.rrdch.cn
http://abCQTCZ2.rrdch.cn
http://1IjZbELU.rrdch.cn
http://HTzGZdAS.rrdch.cn
http://DAswx5DW.rrdch.cn
http://8EJ4IPDX.rrdch.cn
http://sAW9gtdL.rrdch.cn
http://dlA0kkWx.rrdch.cn
http://S9Xhm3IP.rrdch.cn
http://fKlLLiqH.rrdch.cn
http://3xZOhNAk.rrdch.cn
http://LbC8YX2t.rrdch.cn
http://5Zxk65qR.rrdch.cn
http://JcAn4E2f.rrdch.cn
http://klrf2znP.rrdch.cn
http://D45X5hu0.rrdch.cn
http://PKzsVrGU.rrdch.cn
http://QpOZAXlD.rrdch.cn
http://xlHenr4W.rrdch.cn
http://aL9VLhM2.rrdch.cn
http://fhVoWW0j.rrdch.cn
http://www.dtcms.com/a/381321.html

相关文章:

  • Android面试指南(九)
  • Halcon编程指南:符号与元组操作详解
  • 嵌入式第五十二天(GIC,协处理器,异常向量表)
  • 嵌入式学习day48-硬件-imx6ul-key、中断
  • 查找算法和递推算法
  • Webman 微服务集成 RustFS 分布式对象存储
  • 基于51单片机的太阳能锂电池充电路灯
  • 【人工智能通识专栏】第十三讲:图像处理
  • 滚动分页查询-通俗解释
  • 电缆工程量计算-批量测量更轻松
  • UDS NRC速查
  • L2-【英音】地道语音语调--语调
  • 13.渗透-.Linux基础命令(五)-用户管理(修改用户密码)
  • 解决串口数据乱序问题
  • 智能化集成系统(IBMS):构建智慧建筑 “中枢大脑” 的全方案
  • 基于游标(Cursor)的方式来实现滚动分页
  • 30.线程的互斥与同步(四)
  • 《没有架构图?用 netstat、ss、tcpdump 还原服务连接与数据流向》
  • 仓颉语言编程入门:第一个 Windows 下的仓颉应用程序
  • 台达A2E
  • 【操作系统核心考点】进程调度算法全面总结:高频题型与易错点解析
  • ethercat在线调试工具
  • python base core partment-day07-异常、模块、包(对零基础小白友好)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘vaex’问题
  • Acrobat JavaScript 代码中的颜色
  • TCGA单癌肿按单基因高低分组的转录组差异热图分析作图教程
  • SSRF:CVE-2021-40438
  • 传统项目管理与敏捷的核心差异
  • count down 98 days
  • 算法题 Day6---String类(3)