惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Y
Y Combinator Blog
Recorded Future
Recorded Future
博客园 - Franky
I
InfoQ
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Cloudbric
Cloudbric
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
F
Full Disclosure
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Check Point Blog
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
T
Threat Research - Cisco Blogs
U
Unit 42
N
Netflix TechBlog - Medium
The Cloudflare Blog
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
B
Blog
S
Securelist
H
Hacker News: Front Page
Google Online Security Blog
Google Online Security Blog
G
Google Developers Blog

木灵鱼儿

从零开始:手把手教你封装一个企业级 Axios 请求模块 - 木灵鱼儿 03-Vue Query 高级进阶:应对复杂业务场景的硬核套路 - 木灵鱼儿 02-Vue Query 快速入门:从零构建你的第一个声明式查询 - 木灵鱼儿 01-异步状态管理新范式:为什么在 Vue 3 中使用 vue-query? - 木灵鱼儿 git 如何将所有历史提交合并为一条 - 木灵鱼儿 Windows 下如何快速复制目录的同时排除指定的目录和文件 - 木灵鱼儿 x86多网口软路由+pve+爱快ikuai+iStoreOS实现组网和翻墙 - 木灵鱼儿 生产部署时动态导入 Chunk 失效的实用回退方案 - 木灵鱼儿 如何在 Vite 项目中优雅地展示用户协议?(Markdown 转 Vue 组件方案) - 木灵鱼儿 Vue 路由守卫进阶:用策略模式告别 if-else - 木灵鱼儿 15 Python while循环 - 木灵鱼儿 如何生成一个“扫码连WIFI”的二维码 - 木灵鱼儿 14 Python 分支语句if - 木灵鱼儿 13 Python 字符串详解 - 木灵鱼儿 12 Python 语句、表达式与运算符 - 木灵鱼儿
16 Python for循环 - 木灵鱼儿
木灵鱼儿 · 2026-03-01 · via 木灵鱼儿

前言

在日常生活中,我们经常遇到需要“挨个处理”的事情。比如:点名时挨个叫学生的名字、逛超市时把购物车里的商品挨个扫码结账。
在Python中,处理这种“挨个遍历”的任务,for 循环是绝对的王者!它的核心思想是:“把队伍里的每一个元素都请出来,挨个处理一遍”。

for 循环的基本语法与核心概念

for 循环的蓝图长这样:

for 临时变量 in 可迭代对象(比如列表、字符串):
    # 缩进的代码块
    # 每次拿出一个元素,就会执行一次这里的代码

新手必读: 这里的 临时变量 是你自己起的名字(叫 iitemfruit 都可以)。你可以把它想象成一个“抓手”,它每次会从集合里抓取一个东西出来,用完就去抓下一个。

🍎 基础示例 1:遍历列表(点名册)

假设你有一个水果筐(列表),我们用 for 循环把里面的水果挨个拿出来吃掉:

fruits =["苹果", "香蕉", "葡萄", "西瓜"]

# fruit 就是那个“临时变量”,每次代表列表里的一个水果
for fruit in fruits:
    print(f"我正在吃:{fruit} 🍉")

print("水果全吃光啦!")

(看!不需要像 while 循环那样自己维护一个 count += 1for 循环会自动帮你往后走!)

🔠 基础示例 2:遍历字符串(拆字游戏)

字符串就像是一个装着许多字符的盒子,for 循环也可以把它们挨个拆开:

for letter in "Python":
    print(f"当前字母是: {letter}")

for 循环的最佳拍档:range() 函数

如果我们不想遍历列表,只是单纯想“重复执行某段代码N次”,或者想“从 1 数到 100”,就需要请出 for 循环的黄金搭档:range() 函数。它就像是一个流水线机器,专门负责生产连续的数字。

  • range(5):重复 5 次(生成 0, 1, 2, 3, 4)
  • range(1, 6):从 1 数到 5(顾头不顾尾,包含起点1,不包含终点6)
  • range(1, 10, 2):跳着数(生成 1 到 10 之间的所有奇数:1, 3, 5, 7, 9)
# 打印 3 次“你好”
for i in range(3):
    print("你好,Python!")

如果我需要“序号(Index)”怎么办?

很多学过 C++ 或 Java 的朋友会发现,Python 的 for item in list:直接把“值”拿出来,没有自带序号。但在实际开发中,我们非常频繁地需要知道当前元素排在第几个

别担心,Python 为你准备了两种完美的解决方案:

🌟 方案一:最优雅、最地道的做法 —— enumerate() 函数(强烈推荐)

enumerate 的英文意思是“枚举”。你可以把它想象成一个“贴标签机”,它会在你遍历列表的同时,自动给每一个元素贴上递增的序号。

heroes =["钢铁侠", "蜘蛛侠", "蝙蝠侠"]

# index 接收序号,hero 接收具体的英雄名字
for index, hero in enumerate(heroes):
    print(f"编号 {index} 的英雄是:{hero}")

# --- 输出结果 ---
# 编号 0 的英雄是:钢铁侠
# 编号 1 的英雄是:蜘蛛侠
# 编号 2 的英雄是:蝙蝠侠

💡 神奇的小技巧: 如果你是做界面展示,希望序号从 1 开始给普通用户看,可以直接加上 start=1

for index, hero in enumerate(heroes, start=1):
    print(f"第 {index} 名:{hero}")
# 输出:第 1 名:钢铁侠 ...

🛠️ 方案二:修改原数据时的做法 —— 结合 range(len())

思路是:先用 len() 获取列表有多长,再用刚刚学过的 range() 生成一串序号,最后通过序号去列表里拿东西。
当你必须要通过序号去“修改”原列表里的数据时,这种写法最合适:

scores = [80, 90, 85]

# len(scores) 是 3,range(3) 会生成 0, 1, 2
for i in range(len(scores)):
    # i 是序号,我们通过 scores[i] 拿到具体的分数并直接修改它
    scores[i] = scores[i] + 5

print("加分后的成绩单:", scores)
# 输出:加分后的成绩单: [85, 95, 90]

四、 实战案例

学了理论,我们来看看 for 循环在真实写代码时能帮我们解决什么问题。

🛒 案例一:购物车自动结账(累加求和)

cart_prices =[12.5, 30.0, 9.9, 50.5, 8.0]
total_money = 0  # 准备一个空钱包来装总金额

for price in cart_prices:
    total_money += price  # 挨个加到钱包里

print(f"💳 您好,您一共消费了:{total_money} 元。")

🚦 案例二:带 VIP 识别的批量问候(结合 break 和 continue)

for 循环里同样可以使用 break(提前彻底终止)和 continue(跳过本次,继续下一次)。

users =["张三", "李四", "王五", "黑客", "赵六"]

for user in users:
    if user == "黑客":
        print("🚨 警告:发现黑客!停止后面的所有问候!")
        break  # 遇到黑客,直接关闭整个循环

    if user == "王五":
        print("👑 尊贵的VIP王五,您好!")
        continue # 单独问候完王五,跳过下面的普通问候,直接去接待下一个人

    print(f"普通用户 {user},欢迎登录!")

终极对比:for 还是 while

很多新手会迷茫:什么时候用 for,什么时候用 while?记住这个简单的口诀:

  1. 知道次数 / 有现成的东西(列表/字符串)去遍历 ➡️ for 循环
    (例如:遍历 100 个文件、打印 10 次、计算列表里数字的和)
  2. 不知道次数,只看某个“条件”是否满足 ➡️ while 循环
    (例如:玩游戏直到玩家输掉、让用户一直输入密码直到输对为止)