1. 普通循环的痛点:代码又长又慢 🤦‍♀️

关键字

:普通循环、代码冗余、效率瓶颈内容详解: 写普通

for

循环时,经常会出现“啰嗦”的代码——比如“把列表里的数都平方”:

# 普通循环:3行代码
nums = [1,2,3,4]
result = []
for num in nums:
    result.append(num * num)
print(result)  # [1,4,9,16]

不仅代码长,大量循环还会成为

效率瓶颈

(比如处理100万条数据时,普通循环会很慢)。 高级迭代就是Python给的“偷懒工具”——用更简洁的语法写循环,还能让代码跑得更快!

二、列表推导式:一行代码搞定循环

2. 列表推导式:循环的“压缩饼干” 🍪

关键字

:列表推导式、语法格式、简洁性 内容详解: 列表推导式用一行代码实现“循环+数据处理+生成列表”,格式是

[处理逻辑 for 元素 in 可迭代对象]

。比如前面的“平方列表”:

nums = [1,2,3,4]
# 列表推导式:1行搞定
result = [num * num for num in nums]
print(result)  # [1,4,9,16]

还能加

条件过滤

(格式:

[处理逻辑 for 元素 in 可迭代对象 if 条件]

)——比如“取偶数的平方”:

nums = [1,2,3,4,5,6]
# 只处理偶数
result = [num * num for num in nums if num % 2 == 0]
print(result)  # [4,16,36]

类比:普通循环是“煮一碗面(要烧水、下面、调味)”,列表推导式是“泡一碗泡面(热水一冲就好)”——又快又省事儿!

三、字典推导式:给字典“批量造数据”

3. 字典推导式:键值对的“批量生产线” 🏭

关键字

:字典推导式、键值对生成 内容详解: 把列表推导式的

[]

换成

{}

,就能生成字典——格式是

{键:值 for 元素 in 可迭代对象}

。比如“把列表转成{元素:元素平方}的字典”:

nums = [1,2,3,4]
# 字典推导式:生成键值对
num_dict = {num: num * num for num in nums}
print(num_dict)  # {1:1, 2:4, 3:9, 4:16}

也能加条件过滤——比如“只生成偶数的字典”:

num_dict = {num: num * num for num in nums if num % 2 == 0}
print(num_dict)  # {2:4, 4:16}

这在处理CSV数据、批量生成配置字典时超有用!

四、生成器:迭代的“节能模式”

4. 生成器:不占内存的“懒迭代” 🦥

关键字

:生成器、小括号语法、内存优化 内容详解: 列表推导式会

一次性生成所有数据

(比如生成100万个数的列表,会占很多内存)。而生成器是“用一个取一个”的“懒迭代”——把列表推导式的

[]

换成

()

即可:

# 生成器:小括号,不会一次性生成数据
gen = (num * num for num in range(1000000))
print(gen)  # <generator object <genexpr> at 0x...>(不是列表)

# 用next()取数据,取一个生成一个
print(next(gen))  # 0
print(next(gen))  # 1
print(next(gen))  # 4

生成器的优势是

节省内存

(处理100万条数据时,生成器只占“一个元素”的内存),适合处理大数据量!

五、生成器函数:用yield实现“分步返回”

5. 生成器函数:能“暂停”的函数 ⏸️

关键字

:生成器函数、yield语句、分步迭代 内容详解: 用

yield

代替

return

的函数,就是“生成器函数”——调用时不会直接执行,而是返回生成器对象,每次

next()

会执行到

yield

处暂停,返回值。比如“生成斐波那契数列”:

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        yield a  # 暂停,返回a
        a, b = b, a + b

# 调用生成器函数,得到生成器
fib_gen = fib(5)
# 分步取数据
print(next(fib_gen))  # 0
print(next(fib_gen))  # 1
print(next(fib_gen))  # 1
print(next(fib_gen))  # 2
print(next(fib_gen))  # 3

类比:普通函数是“一次性把所有零食给你”,生成器函数是“每次给你一个零食”——适合“数据要分步处理”的场景(比如逐行读大文件)。

六、实战:用高级迭代处理CSV数据

6. 实战:CSV数据的“高效处理” 📊

关键字

:CSV处理、推导式+生成器、大数据量 内容详解: 处理CSV数据时,高级迭代能让代码更简洁、更省内存。比如“读取CSV文件,转成字典列表”:

import csv

# 用生成器逐行读CSV(不占内存)
def read_csv_gen(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        reader = csv.DictReader(f)  # 按列名生成字典
        for row in reader:
            yield row  # 逐行返回,不一次性加载

# 用列表推导式过滤数据(取年龄>18的行)
adult_data = [row for row in read_csv_gen("data.csv") if int(row["age"]) > 18]
print(adult_data)  # 只包含成年人的字典列表

这样处理1GB的CSV文件,也不会占满内存——生成器负责“懒读”,推导式负责“快速过滤”,完美解决大数据问题!

七、高级迭代的价值:简洁+高效

7. 划重点:高级迭代的“双buff” 🎯

关键字

:代码简洁、效率提升、内存优化 内容详解: 高级迭代(推导式、生成器)的核心优势是“两快一省”:

  • 📝 写得快:一行代码代替多行循环,减少冗余;
  • 🏃 跑得快:推导式是Python内部优化的循环,比普通for循环效率高;
  • 💾 省内存:生成器“用一个取一个”,适合大数据量处理。

这也是Python“优雅编程”的体现——用简洁的语法,解决复杂的循环问题!