Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python itertools.product()返回值_Python_List_Tuples - Fatal编程技术网

Python itertools.product()返回值

Python itertools.product()返回值,python,list,tuples,Python,List,Tuples,当我尝试运行以下代码时 product([1,2,3],['a','b']) 它返回了以下类型的对象: <itertools.product object at 0x01E76D78> 有没有办法把它变成一个列表列表,而不是元组?像这样: [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']] 提前谢谢 您可以执行以下操作,但这是毫无意义的。由于值不变,元组比列表更适合这种情况。它还可以节省内存 >>

当我尝试运行以下代码时

product([1,2,3],['a','b'])
它返回了以下类型的对象:

<itertools.product object at 0x01E76D78>
有没有办法把它变成一个列表列表,而不是元组?像这样:

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

提前谢谢

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

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

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

[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

最外层的
list()
在Python2上不是必需的,尽管它在Python3上是必需的。这是因为在Python3中,
map对象
map()

返回笛卡尔积。您的问题是什么?您想知道
itertools.product
返回的是什么吗?或者您想知道如何将返回值转换为列表列表?为什么需要这样做?似乎很有可能,无论你想实现什么,都可以用更好的方式来实现。
itertools
是用来避免建立列表的。列表比元组更糟糕吗?我试图将元组转换为列表,因为我需要为其他内容格式化它们。我想知道itertools.product返回的内容,以及如何将它们转换为列表。抱歉,这就是为什么我认为列表理解更适合交叉兼容,尽管这是一项非常奇怪的任务。@jamylak:是的,它确实更适合交叉兼容。我避免使用它们的原因是,如果我实际上不需要它们的虚拟变量,我通常会避免使用它们,以避免引入噪声。(
map(list,…)
[list(l)for l in…]
…YMMV)读起来好多了@Mehrad我明白你的意思,但在这种情况下,你的解决方案在Python 2上看起来更好,但在Python中更糟3@jamylak字体我想我3年前没有回复这个,但问题是,在Python2中,伪变量可能会影响程序的其余部分,因为它的作用域泄漏。这是一件正确的事情,不仅仅是一件审美的事情。你指的是什么?
for item in product([1,2,3],['a','b']):
    # do what you want with the item
list(map(list, product([1, 2, 3], ['a', 'b'])))