1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# for循环后还能跟个else, 如果循环正常结束,没有遇到break,else里的代码就执行。
for i in range(5):
continue
else:
print("循环顺利完成,没被break掉!") # 循环中没有遇到break,else里的代码将执行
for i in range(5):
break
else:
print("循环顺利完成,没被break掉!") # 循环中有遇到break,else里的代码不执行
# 使用zip:并行处理
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
# 迭代器与next函数,所有可迭代对象都可以用迭代器来玩:
it = iter(names)
print(next(it)) # Alice
print(next(it)) # Bob
# 列表推导结合条件判断
vowel_start_names = [name for name in names if name[0].lower() in 'aeiou']
print(vowel_start_names)
# 生成器表达式:轻量级迭代神器 - 节省内存
# 生成器是Python的一大特色,非常适合处理大数据流。看这个例子:
# 生成所有小于 1000000 的平方数,但不一次性加载到内存中
squares = (i**2 for i in range(1000000))
for square in squares: # 只在需要时才计算下一个值,内存友好。
print(square)
# 列表推导与循环嵌套的高级应用
# 当你需要处理多维数据时,嵌套的列表推导可以非常直观:
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)
# 利用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']
# 循环与异常处理:稳健的循环
# 在处理可能抛出异常的循环时,使用try-except可以增加代码的健壮性:
numbers = [1, 0, 3, 4]
for num in numbers:
try:
print(1 / num)
except ZeroDivisionError:
print("Oops! Can't divide by zero.")
|