8

当我尝试运行以下代码时

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']]

提前致谢!

4

3 回答 3

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

list()Python 2 不需要最外层,尽管它适用于 Python 3。这是因为在 Python 3 中 amap object由 . 返回map()

于 2012-06-19T06:59:24.840 回答
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
于 2012-06-19T06:51:31.353 回答
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']]
于 2012-06-19T06:51:25.637 回答