Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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的输出存储为数组吗_Python_Itertools - Fatal编程技术网

Python 要将itertools的输出存储为数组吗

Python 要将itertools的输出存储为数组吗,python,itertools,Python,Itertools,我有以下代码 result = itertools.combinations_with_replacement(range(3),3) for each in result: print(each) 输出: (0, 0, 0) (0, 0, 1) (0, 0, 2) (0, 1, 1) (0, 1, 2) (0, 2, 2) (1, 1, 1) (1, 1, 2) (1, 2, 2) (2, 2, 2) 我想将“result”中的单个“items”存储为numpy数组,如果它们加起

我有以下代码

result = itertools.combinations_with_replacement(range(3),3)

for each in result:
    print(each)
输出:

(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 1, 1)
(0, 1, 2)
(0, 2, 2)
(1, 1, 1)
(1, 1, 2)
(1, 2, 2)
(2, 2, 2)
我想将“result”中的单个“items”存储为numpy数组,如果它们加起来等于2。我不确定itertools输出的数据类型到底是什么

伪代码中的示例:

for each in result:
    if sum(each)==2:
        numpy array = each

因此,请使用以下理解:

import itertools
import numpy as np

result = itertools.combinations_with_replacement(range(3),3)
desired = [np.array(i) for i in result if sum(i)==2]
desired
#[array([0, 0, 2]), array([0, 1, 1])]

以下是一个功能解决方案:

import itertools
import numpy as np

result = itertools.combinations_with_replacement(range(3),3)

list(map(np.array, filter(lambda x: sum(x)==2, result)))

# [array([0, 0, 2]), array([0, 1, 1])]

您总是可以通过
type(output)
检查python中的输出类型。在您的情况下,它是元组。
[(x,y,z)表示(x,y,z)如果x+y+z==2,那么结果中的(x,y,z)
我无法访问它?所需的[0][0]使我的索引超出范围。因此,也没有所需的[0],如果它是一个包含两个数组的列表,您是否使用了2?如果你这样做了,应该有两个阵列是的!这就是我不明白的。itertools应该返回元组的对象列表。您的代码应该将这些元组作为数组存储在另一个名为“所需”的列表中。我应该能够通过括号访问数组,但它是空的。我怀疑这个条件是错误的,即sum(I)==2不返回任何东西。我在Python2和Python3上都测试了这个条件,它可以工作。是否使用不同的数组而不是
范围(3)