当我尝试运行以下代码时
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']]
提前致谢!
答案 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']]