Python 的 itertools 是一个强大的迭代器工具库,可以让你的代码更高效、更简洁。今天,我们就来深度解析 itertools,让你彻底掌握它的用法!
1:什么是 itertools?
itertools 是 Python 内置模块,提供了 处理迭代对象的高效工具,可用于 无限迭代、排列组合、分组等场景。
常见功能:
无限迭代——count()、cycle()、repeat()
排列组合——permutations()、combinations()
数据分组——groupby()
迭代器操作——chain()、zip_longest()
下面,我们来详细解析它们的用法!
2:无限迭代:生成无穷序列
itertools.count():生成等差数列
from itertools import count
for num in count(10, 2): # 从 10 开始,每次加 2
print(num)
if num > 20: # 避免无限循环
break
输出:
10, 12, 14, 16, 18, 20
适用于无限计数、自动编号等!
itertools.cycle():无限循环遍历
from itertools import cycle
colors = ["red", "green", "blue"]
for color in cycle(colors):
print(color)
if color == "blue": # 避免死循环
break
输出:
red, green, blue
适用于轮播图、游戏循环等!
itertools.repeat():重复元素
from itertools import repeat
for item in repeat("Python", 3): # 重复 3 次
print(item)
输出:
Python
Python
Python
适用于填充数据、重复操作!
3:排列组合:高效生成所有可能情况
itertools.permutations():全排列
from itertools import permutations
data = ["A", "B", "C"]
for p in permutations(data, 2): # 取 2 个元素排列
print(p)
输出:
('A', 'B')
('A', 'C')
('B', 'A')
('B', 'C')
('C', 'A')
('C', 'B')
适用于生成所有可能的排列,如密码猜测!
itertools.combinations():组合
from itertools import combinations
data = ["A", "B", "C"]
for c in combinations(data, 2): # 取 2 个元素组合
print(c)
输出:
('A', 'B')
('A', 'C')
('B', 'C')
适用于组合问题,如抽奖、团队组队!
itertools.combinations_with_replacement():可重复组合
from itertools import combinations_with_replacement
data = ["A", "B", "C"]
for c in combinations_with_replacement(data, 2):
print(c)
输出:
('A', 'A')
('A', 'B')
('A', 'C')
('B', 'B')
('B', 'C')
('C', 'C')
适用于允许重复的组合,如硬币兑换问题!
4:数据处理:迭代器操作更高效
itertools.chain():合并多个迭代器
from itertools import chain
list1 = [1, 2, 3]
list2 = ["A", "B", "C"]
result = list(chain(list1, list2))
print(result)
输出:
[1, 2, 3, 'A', 'B', 'C']
适用于多个列表合并,避免 + 操作带来的额外消耗!
itertools.zip_longest():填充 zip() 缺失值
from itertools import zip_longest
list1 = [1, 2, 3]
list2 = ["A", "B"]
result = list(zip_longest(list1, list2, fillvalue="-"))
print(result)
输出:
[(1, 'A'), (2, 'B'), (3, '-')]
适用于长度不同的列表合并,避免数据丢失!
5:groupby():数据分组
按相邻相同元素分组
from itertools import groupby
data = "aaabbcddd"
for key, group in groupby(data):
print(key, list(group))
输出:
a ['a', 'a', 'a']
b ['b', 'b']
c ['c']
d ['d', 'd', 'd']
适用于日志分析、分类统计等!
更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!