itertools.product是适合您的工具
>>> some_list = [['A','B','C'],['w','x','y','z'],[1,2]]
>>> list(itertools.product(*some_list))
[('A', 'w', 1), ('A', 'w', 2), ('A', 'x', 1), ('A', 'x', 2), ('A', 'y', 1), ('A', 'y', 2), ('A', 'z', 1), ('A', 'z', 2), ('B', 'w', 1), ('B', 'w', 2), ('B', 'x', 1), ('B', 'x', 2), ('B', 'y', 1), ('B', 'y', 2), ('B', 'z', 1), ('B', 'z', 2), ('C', 'w', 1), ('C', 'w', 2), ('C', 'x', 1), ('C', 'x', 2), ('C', 'y', 1), ('C', 'y', 2), ('C', 'z', 1), ('C', 'z', 2)]
几个关键点
itertools.product
期望迭代作为参数。因此,您需要使用splat
运算符将列表作为参数传递
itertools.product 返回一个生成器。您需要将其转换为列表,以转储整个内容。或者,您可以迭代它或传递给期望可迭代的函数
for e in itertools.product(*some_list):
print e