在Python中取消列表以使用itertools.product

时间:2014-01-16 19:24:12

标签: python list product

所以我一直试图这样做一段时间,我似乎无法找到解决方案......也许你可以帮忙! 我试图"取消列表"列表列表,以便在itertools.product()中使用它们。 如您所知,itertools.product()可以接收多个迭代。让我说我得到了这个列表列表:

x=[[1,2,3],["a"],["B","C"]]

如果我们将其放入itertools.product()

for i in product(x):
    print i

我们会收到

([1, 2, 3],)
(['a'],)
(['B', 'C'],)

我需要帮助的是找到一种方法来取消"取消列表" x,因此itertools.product()中将有3个迭代,如下所示:

for i in product([1,2,3],["a"],["B","C"]):
print i

将打印:

(1, 'a', 'B')
(1, 'a', 'C')
(2, 'a', 'B')
(2, 'a', 'C')
(3, 'a', 'B')
(3, 'a', 'C')

2 个答案:

答案 0 :(得分:5)

只需使用*运算符(有时称为“splat”运算符)来解压缩参数:

list(product(*x))
Out[34]: 
[(1, 'a', 'B'),
 (1, 'a', 'C'),
 (2, 'a', 'B'),
 (2, 'a', 'C'),
 (3, 'a', 'B'),
 (3, 'a', 'C')]

答案 1 :(得分:2)