itertools.product()返回值

时间:2012-06-19 06:49:11

标签: python list tuples

当我尝试运行以下代码时

product([1,2,3],['a','b'])

返回看起来像

<itertools.product object at 0x01E76D78>

然后我尝试在其上调用list()并获得以下内容:

[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]

有没有办法让它成为列表而不是元组?像这样:

[[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']]

提前致谢!

3 个答案:

答案 0 :(得分:5)

list(map(list, product([1, 2, 3], ['a', 'b'])))

Python 2上不需要最外面的list(),但它适用于Python 3。

答案 1 :(得分:2)

它返回元组的迭代器。如果您需要列表列表,可以执行以下操作:

[list(a) for a in product([1,2,3],['a','b'])]

但是,在许多情况下,只使用迭代器更好。你可以这样做:

for item in product([1,2,3],['a','b']):
    # do what you want with the item

答案 2 :(得分:1)

您可以执行以下操作,但这是毫无意义的。由于值没有改变,元组比列表更适合这个。它还可以节省内存。

>>> from itertools import product
>>> [list(x) for x in product([1,2,3],['a','b'])]
[[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']]