如何用高效Python函数简化多层嵌套for循环?
简化多层嵌套循环遍历组合的Python方案
Python标准库中的itertools.product是解决这类问题的理想工具,它可以直接生成多个列表的笛卡尔积(即所有可能的元素组合),完美替代n层嵌套的for循环,代码更简洁且效率有保障。
具体实现示例
假设你有lst1, lst2, ..., lstn这n个列表,只需将它们放入一个容器,再通过itertools.product遍历即可:
import itertools # 把所有需要遍历的列表存入一个容器 all_lists = [lst1, lst2, lst3, ..., lstn] # 遍历所有组合 for combo in itertools.product(*all_lists): # combo 是一个元组,包含当前组合的所有元素,格式为(x1, x2, ..., xn) # 可按需拆包使用 x1, x2, ..., xn = combo # 执行你的操作 # do something
关键说明
- 代码中的
*all_lists是解包操作,把容器中的每个列表作为独立参数传递给itertools.product - 每个
combo是元组类型,若需要列表格式可转换为list(combo) itertools模块基于C实现,性能优于纯Python编写的嵌套循环,无需担心效率问题- 如果需要限制遍历的组合数量,可结合
itertools.islice截断结果,但遍历全部组合时直接使用product即可
内容的提问来源于stack exchange,提问作者Rebel
相关产品推荐
相关产品推荐

