Python如何返回一个由范围列表组成的组合?

4

我在努力返回一个基于范围列表的所有列表组合。

例如,如果我有:

test_list = [range(0,11,1),range(0,11,2),range(0,11,5)]

我希望您能返回一个基于范围的所有可能组合的列表。 例如:

output_list[[0,0,5],[0,0,10],[0,2,0],[0,4,0],[0,6,0].......]

但是我所能做的只有:
import itertools

test_list = [range(0,11,1),range(0,11,2),range(0,11,5)]
output_list = []
for i in itertools.permutations(test_list):
    if i not in output_list:
        output_list.append(i)

返回每个范围的排列,(再次是范围列表)?

3
尝试使用 itertools 模块中的 product 函数 - http://docs.python.org/library/itertools.html#itertools.product - spicavigo
1个回答

13
output_list = list(itertools.product(*test_list))

嘿,戴夫,感谢你的帮助!现在有一件事我不确定,那就是这行代码中的“*”是用来表示参数吗? - tijko
1
是的,它将列表解包为 itertools.product 的参数。 - jamylak
2
@tijko:*扩展运算符用于将test_list作为一组参数解包。 - Joel Cornett
2
这是用于tuple/list unpacking的。基本上,它将func([a,b,c])转换为func(a, b, c)。本质上,*[a,b,c]a, b, c相同。 - inspectorG4dget
“笛卡尔积”是指itertools.product()所执行的操作。 “笛卡尔”意味着你不知道它叫什么,因此无法在Google上搜索到它。 - Bob Stein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接