我这里有一个称为factors
的函数,用于定义第二个函数permutations
。第一个factors
在这里:
def factors(x):
factors = []
for x in range(1,x+1):
factors.append(x)
return factors
我在其中使用因子的下一段代码是:
import itertools as it
def permutations(x):
for p in it.permutations(factors(x)):
return(np.array(p))
当我尝试运行
permutations(3)
时,它返回:array([1 2 3])
我似乎无法返回所有行,而只是获取数组的第一行。我尝试打印它,然后打印作品:
import itertools as it
for p in it.permutations(factors(3)):
print(np.array(p))
返回:
[1 2 3]
[1 3 2]
[2 1 3]
[2 3 1]
[3 1 2]
[3 2 1]
我认为这与返回的方式有关,因为我只要求第一个数组,而不是以某种方式迭代它以显示所有数组。我希望它返回所有数组作为返回给我的函数。
最佳答案
当您的函数遇到return语句时,它将永远返回。将return
更改为yield
以生成一个生成器:
def permutations(x):
for p in it.permutations(factors(x)):
yield np.array(p)
演示:
>>> list(permutations(3))
[array([1, 2, 3]), array([1, 3, 2]), array([2, 1, 3]), array([2, 3, 1]), array([3, 1, 2]), array([3, 2, 1])]
另一件事:您的
factors
函数毫无意义。您可以使用range
来完成相同的操作,例如:>>> range(1, 5)
[1, 2, 3, 4]
所以线
for p in it.permutations(factors(x)):
应该写成
for p in it.permutations(range(1, x+1)):
最后,如果您使用的是Python 3.3或更高版本,则可以使用
yield from
语法:def permutations(x):
yield from map(np.array, it.permutations(range(1, x+1)))
关于python - 如何分别返回完整的数组列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35497684/