Python for循环的12种巧妙运用

在这里插入图片描述


1.基础篇:Hello, For Loop!
  • 想象一下,你想给班上的每位同学发送“Hello!”,怎么办?看Python如何一招搞定:
names = ["Alice", "Bob", "Charlie"]  
for name in names:  
    print(f"Hello, {name}!")  

  • 这段代码就像一个邮递员,挨家挨户(遍历列表中的每个名字)送信(打印问候语)。

2.计数助手:enumerate来帮忙
  • 给每个同学编号,是不是更正式点?enumerate函数能助你一臂之力:
for i, name in enumerate(names):  
print(f"{i+1}. Hello, {name}!")  

  • enumerate就像给你的名单加了页码,i是页码,name是名字。

3.列表生成式:简洁之美
  • 想要快速创建一个新列表,比如每个名字后面加个"!"?
excited_names = [f"{name}!" for name in names]  
print(excited_names)  

  • 这叫列表生成式,一行代码胜千言,效率与优雅并存!

4.范围函数range的魔法
  • 想数数?range函数是你的数字精灵:
for i in range(5):  # 从0到4  
print(i)  

  • 别小看它,循环次数控制全靠它!

5.嵌套循环:编织复杂图案
  • 记得小时候的九九乘法表吗?Python帮你轻松绘制:
for i in range(1, 10):  
    for j in range(1, i+1):  
        print(f"{j}x{i}={i*j}", end="\t")  
    print()  # 换行  

  • 两个循环相互嵌套,就像俄罗斯套娃一样,一层又一层。

6.break和continue:控制流的指挥棒
  • 遇到不喜欢的同学,直接跳过?continue出场:
for name in names:  
    if name == "Bob":  
        continue  
    print(f"Hello, {name}!")  

  • continue说:“Bob,你先休息一下,我去找下一个。”

7.else子句:循环的附加惊喜
  • 你知道吗?for循环后还能跟个else
for i in range(5):  
    if i == 3:  
        break  
else:  
    print("循环顺利完成,没被break掉!")  

  • 如果循环正常结束,没有遇到breakelse里的代码就执行。

8.使用zip:并行处理
  • 有两组数据要一起处理?zip函数让你左右开弓:
names = ["Alice", "Bob", "Charlie"]  
ages = [25, 30, 35]  
for name, age in zip(names, ages):  
    print(f"{name} is {age} years old.")  

  • zip就像一条神奇的纽带,把列表绑在一起。

9.遍历字典:键值对的舞蹈
  • 字典里的秘密,for也能探查:
my_dict = {"apple": 3, "banana": 5, "cherry": 7}  
for key, value in my_dict.items():  
    print(f"I have {value} {key}(s).")  

  • 通过.items(),每个键值对都跳起了双人舞。

10.逆序循环:时光倒流
  • 想反着数数,或者倒着念名字?用reversed函数:
for name in reversed(names):  
    print(f"Goodbye, {name}!")  

  • 时光倒流,从最后一个名字开始告别。

11迭代器与next函数:深海探险
  • 所有可迭代对象都可以用迭代器来玩:
it = iter(names)  
print(next(it))  # Alice  
print(next(it))  # Bob  

  • iter()制造潜水艇,next()带你潜入下一个宝藏。

12.高级技巧:列表推导结合条件判断
  • 结合条件,快速筛选出喜欢的名字:
vowel_start_names = [name for name in names if name[0].lower() in 'aeiou']  
print(vowel_start_names)  


高级技巧及应用

1.生成器表达式:轻量级迭代神器
  • 生成器是Python的一大特色,非常适合处理大数据流。看这个例子:
# 生成所有小于10的平方数,但不一次性加载到内存中  
squares = (i**2 for i in range(10))  
for square in squares:  
    print(square)  

  • 生成器表达式像是一张按需提供食物的菜单,而不是一次性端上所有菜肴。

2.列表推导与循环嵌套的高级应用
  • 当你需要处理多维数据时,嵌套的列表推导可以非常直观:
matrix = [  
    [1, 2, 3],  
    [4, 5, 6],  
    [7, 8, 9]  
]  
  
# 转置矩阵  
transposed = [[row[i] for row in matrix] for i in range(3)]  
for row in transposed:  
    print(row)  

  • 这段代码仿佛是在进行空间变换,将矩阵沿主对角线翻转。

3.利用itertools:循环的高级工具箱
  • Python的itertools模块提供了强大的迭代工具。比如,你想交替合并两个列表:
from itertools import chain  
  
list1 = [1, 2, 3]  
list2 = ['a', 'b', 'c']  
  
# 使用chain交替合并  
merged = list(chain.from_iterable(zip(list1, list2)))  
print(merged)  # 结果: [1, 'a', 2, 'b', 3, 'c']  

  • itertools就像一个瑞士军刀,里面藏着各种循环处理的利器。

4.循环效率优化:理解迭代原理
  • 了解Python的迭代机制能帮助你写出更高效的代码。例如,避免在循环内部进行列表的append操作,特别是在循环体很大时,可以考虑预分配列表大小或使用列表生成式。

5.循环与异常处理:稳健的循环
  • 在处理可能抛出异常的循环时,使用try-except可以增加代码的健壮性:
numbers = [1, 0, 3, 4]  
for num in numbers:  
    try:  
        print(1 / num)  
    except ZeroDivisionError:  
        print("Oops! Can't divide by zero.")  

  • 这样,即使遇到除以零的错误,循环也不会终止,而是优雅地处理异常。

最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!

Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便****

在这里插入图片描述

在这里插入图片描述

### Python 中使用 `for` 循环创建死循环 通常情况下,`for` 循环会遍历一个可迭代对象并最终结束。然而,在某些特殊场景下也可以利用 `for` 循环来构建看似无限运行的逻辑,即所谓的“死循环”。需要注意的是,直接通过常规方式很难让 `for` 循环成为真正的死循环,因为其设计初衷就是基于序列或其他容器类型的逐项处理。 为了制造一种持续不断的循环效果,可以通过一些技巧使 `for` 循环不断获取新的元素从而不会终止: #### 方法一:使用 itertools.cycle() 借助于标准库中的 `itertools` 模块下的 `cycle()` 函数可以轻松达成此目的。该函数接收一个列表作为参数,并返回一个能够无尽地重复这个列表中项目的迭代器。 ```python from itertools import cycle for item in cycle(['A', 'B']): print(item) # 这是一个永远不会停止打印 A 和 B 的循环 ``` 这种方法虽然实现了表面上看像是死循环的效果,但实际上它依赖外部模块提供支持[^1]。 #### 方法二:自定义无穷大生成器 另一种方法是编写自己的生成器函数,使其每次调用都产出相同的结果,进而配合 `for` 使用形成事实上的永久循环。 ```python def infinite_sequence(): while True: yield "value" for value in infinite_sequence(): print(value) # 将一直输出"value" ``` 这种方式同样不是严格意义上的 `for` 死循环,而是巧妙运用了生成器特性与内部隐含的 `while True:` 结构相结合的方式模拟出了相似行为[^2]。 #### 注意事项 - **性能影响**:长时间运行的死循环可能会消耗大量CPU资源甚至导致系统不稳定。 - **退出机制**:应考虑加入适当的中断条件或信号处理器以便能够在必要时安全地中止循环过程。 - **调试困难**:由于缺乏自然边界,这类循环可能增加程序复杂度和潜在错误排查难度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值