Python如何遍历多列表全参数组合循环调用多参数函数
实现方法
你需要的遍历逻辑是三层嵌套优先级:最外层遍历分类(category)、中间层遍历颜色(color)、最内层遍历年龄(age),以下两种方法都可以严格按照指定顺序跑完所有参数组合,同时收集返回结果:
方法1:手动写三层嵌套循环(逻辑直观,顺序完全可控)
不需要引入额外依赖,循环层级和你要求的固定顺序完全对应,不会出现顺序错乱:
# 定义参数取值列表 category_list = ['cat', 'dog', 'squirrel'] color_list = ['brown', 'black'] age_list = [1, 2, 3] all_results = [] # 存储所有组合的函数返回值 # 循环顺序严格匹配需求:外层category -> 中层color -> 内层age for category in category_list: for color in color_list: for age_val in age_list: return_val = call_function(category, color, age_val) all_results.append(return_val)
执行顺序完全符合你的要求:
- 固定category为
'cat'时,先取color为'brown',依次传入age=1、2、3调用函数 - 再切换color为
'black',同样依次传入三个age值调用 - 后续category切换为
'dog'、'squirrel'时,重复上述遍历逻辑
方法2:用标准库itertools.product生成笛卡尔积
Python标准库提供的itertools.product可以快速生成多个可迭代对象的笛卡尔积,只要传入参数的顺序和循环优先级一致,生成的组合顺序和手动嵌套循环完全相同:
from itertools import product category_list = ['cat', 'dog', 'squirrel'] color_list = ['brown', 'black'] age_list = [1, 2, 3] all_results = [] # 传入参数顺序必须和优先级一致:先category,再color,最后age for category, color, age_val in product(category_list, color_list, age_list): return_val = call_function(category, color, age_val) all_results.append(return_val)
提示:不要随意调换
product里的参数传入顺序,否则生成的组合遍历顺序会不符合要求。如果需要验证顺序,可以先把循环里的调用换成print(category, color, age_val)打印参数,确认顺序正确后再跑实际函数。
内容的提问来源于stack exchange,提问作者user18334254
相关产品推荐
相关产品推荐

