1. count - 创建数字序列
生成从指定数字开始、以指定步长无限递增的迭代器。
import itertools
# 从5开始,步长为3的无限序列
counter = itertools.count(start=5, step=3)
# 打印前5个元素
for i in range(5):
print(next(counter))
输出结果: 5, 8, 11, 14, 17
掌握高效迭代器处理技巧,提升Python编程效率
Python的itertools模块提供了一系列高效的工具,用于创建和使用迭代器。这些函数受函数式编程语言如Haskell和APL的启发,专为快速和高效的内存使用而设计。
使用itertools模块可以:
生成从指定数字开始、以指定步长无限递增的迭代器。
import itertools
# 从5开始,步长为3的无限序列
counter = itertools.count(start=5, step=3)
# 打印前5个元素
for i in range(5):
print(next(counter))
输出结果: 5, 8, 11, 14, 17
无限重复输入的可迭代对象内容。
import itertools
colors = ['red', 'green', 'blue']
color_cycle = itertools.cycle(colors)
# 打印8个元素
for i in range(8):
print(next(color_cycle))
输出结果: red, green, blue, red, green, blue, red, green
重复生成指定对象,可以指定重复次数或无限重复。
import itertools
# 重复10次
repeater = itertools.repeat('Python', times=5)
for item in repeater:
print(item)
输出结果: Python(重复5次)
将多个迭代器连接成一个连续的迭代器。
import itertools
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
tuple1 = (4.5, 5.5)
combined = itertools.chain(list1, list2, tuple1)
for item in combined:
print(item)
输出结果: 1, 2, 3, 'a', 'b', 'c', 4.5, 5.5
根据键函数对连续元素进行分组。
import itertools
data = [('A', 90), ('A', 85), ('B', 92),
('B', 88), ('C', 95), ('A', 89)]
# 按字母分组
sorted_data = sorted(data, key=lambda x: x[0])
grouped = itertools.groupby(sorted_data, key=lambda x: x[0])
for key, group in grouped:
print(f"组 {key}: {list(group)}")
输出结果:
组 A: [('A', 90), ('A', 85), ('A', 89)]
组 B: [('B', 92), ('B', 88)]
组 C: [('C', 95)]
生成可迭代对象中所有可能的排列(顺序重要)。
import itertools
items = ['A', 'B', 'C']
perms = itertools.permutations(items, r=2)
for p in perms:
print(p)
输出结果:
('A', 'B')
('A', 'C')
('B', 'A')
('B', 'C')
('C', 'A')
('C', 'B')
生成可迭代对象中所有可能的组合(顺序不重要)。
import itertools
items = ['A', 'B', 'C']
combs = itertools.combinations(items, r=2)
for c in combs:
print(c)
输出结果:
('A', 'B')
('A', 'C')
('B', 'C')
生成输入迭代器的笛卡尔积(相当于嵌套循环)。
import itertools
dice_faces = [1, 2, 3, 4, 5, 6]
two_dice = itertools.product(dice_faces, repeat=2)
# 打印前10种组合
for i, combo in enumerate(two_dice):
if i >= 10:
break
print(combo)
输出结果:
(1, 1), (1, 2), (1, 3), (1, 4), (1, 5)
(1, 6), (2, 1), (2, 2), (2, 3), (2, 4)
itertools模块是处理迭代任务的强大工具,特别适合:
通过合理使用itertools,可以使代码更简洁、高效且Pythonic。掌握这些工具将显著提升你的Python编程能力!
本文由DiaoSeZhen于2025-07-16发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20255739.html
发表评论